javaSE学习-面向对象1-java类、变量

面向对象

面向对象概述

面向对象程序设计(简称 OOP)是当今主流的程序设计范型

在OOP中, 不必关心对象的具体实现, 只需满足要求即可

类和对象

类是对现实生活中事物的抽象,对事物的描述
对象,就是事物的一个实体,在系统中用来描述客观事物的一个实体

类和对象的关系

同一个类实例化出来的的所有对象都存在相同的行为

对象

构建对象

使用构造器创建对象实例

Date date = new Date();

javaSE_对象_创建对象

对象变量和对象

一个对象变量不是对象,也没有包含对象,而是引用一个对象,java中任何对象变量的值都是对其他地方的对象的引用

java是面向对象的语言,类和对象是核心思想

声明类需要用关键字class

1
2
3
4
class 类名称{
//成员变量
//成员方法
}

类中的变量

一个类的变量包括:成员变量,类变量,局部变量

  • 成员变量:定义在类中方法外,又称为实例变量
  • 类变量:定义在类中方法外,必须为static类型
  • 局部变量:在方法内部

java中,一个类是体现一个事物的,而成员变量代表的是事物的属性,类的方法是描述事物的行为

1
2
3
4
5
6
class Student{
String name;
int age;
static int eyeCount;
public void study(String stdName){}
}

以上代码中,学生是类Student,static 修饰的 eyeCount 变量是类变量,学生有姓名的年龄,所以成员变量是name、age,学生有学习的行为,所以对应的方法是study,方法内的变量 stdName 是局部变量

类变量

类变量,用static关键字声明,所以也称静态变量,必须在类中方法外进行声明定义

在创建对象的实例时类变量被创建,对象被销毁时变量被销毁

静态变量可以通过:ClassName.类变量名称 的方式访问,通常类变量命名为大写字母

静态变量在类加载时初始化

成员变量

成员变量,又称为实例变量

在创建对象实例时创建类的成员变量,当对象被销毁时被销毁。

如果在创建对象实例时,未显式分配值的成员变量在声明期间程序会自动分配一个初始值,成员变量的初始化值取决于成员变量的类型。

元素类型 初始值
byte 0
short 0
int 0
long 0
float 0.0
double 0.0
char “\u0000”
boolean false
对象引用 null

静态变量,存储在静态存储区,经常与final关键字共同使用;

方法变量

方法变量必须在使用之前进行显示初始化,否则编译报错

方法变量仅仅在方法的执行期间存在

成员变量和局部变量

成员变量和局部变量的区别:

  • 类中的位置:
    • 成员变量:在类中,方法外,整个类都可以访问成员变量
    • 局部变量:在局部范围,如在方法内,方法内的函数、语句等
  • 内存分配位置:
    • 成员变量:在堆内存中,类在编译.class文件时放在堆中的方法区
    • 局部变量:在栈内存中
  • 生命周期:
    • 成员变量:随着对象的建立而产生,随着对象的消失而销毁
    • 局部变量:方法被调用,创建变量;方法调用完毕,空间被销毁
  • 初始化
    • 成员变量:有默认初始化值
    • 局部变量:没有默认初始化值;必须对变量进行定义赋值才能使用

在成员变量和局部变量名称相同时,在方法执行中采用就近原则

访问修饰符

java中定义类、方法、修饰符等通常会添加访问修饰符,通过访问修饰符来控制对类、变量、方法的访问权限

java中支持4种访问修饰符

修饰符 当前类内部 同一包内 同包内、包外子类 所有类
private
default
protected
public
  • private:只能被自己访问和修改
  • default(默认没有修饰符):同一包中的类可以访问,声明时没有加修饰符,认为是friendly
  • protected:自身,子类及同一个包中类可以访问
  • public:可以被所有其他类所访问