5.2、面向对象——变量
变量
成员变量可以不用初始化,不初始化时取默认值:0;0L;0.0f;false;null
局部变量必须初始化,否则将出错。
studentID是成员变量,由每个类的实例化对象自己维护,pesident是静态变量,由类自己维护,被所有实例化对象共享使用
成员变量
成员变量(方法外部、类范围内声明的变量)的声明格式:
[①访问修饰符] [②类型修饰符] <数据类型> 变量名 [=初始值]
①访问修饰符:设置变量的访问权限
访问级别 | 访问控制修饰符 | 同类 | 同包不同类(不含子类) | 同包子类 | 不同包不同类****(不含子类) | 不同包子类 |
---|---|---|---|---|---|---|
公开 | public | √ | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | -- | √(注意) |
默认 | 没有访问控制修饰符 | √ | √ | √ | -- | -- |
私有 | private | √ | --- | --- | -- | -- |
注:成员变量通常设置为private,然后再设置一些public权限的方法来设置、获取成员变量的值,防止由对象直接访问变量而导致数据的错误、混乱或安全性问题。
②类型修饰符:修改变量类型
public class ClassTest {
//缺省:表示一个具体的、可实例化及可被继承的类
private String name;//缺省:表一个实例变量。在对象创建后才会分配内存
/*访问格式:
*类内:变量名
*类外:对象名.变量名
*/
public static int omg = 666;//static修饰:设置为类变量(静态变量)。在类加载后就分配了内存。其值对任意对象都相同(最新值)
/*访问格式:
*类内:变量名
*类外:对象名.变量名 || 类名.对象名
*/
}
15
1
public class ClassTest {
2
//缺省:表示一个具体的、可实例化及可被继承的类
3
private String name;//缺省:表一个实例变量。在对象创建后才会分配内存
4
/*访问格式:
5
*类内:变量名
6
*类外:对象名.变量名
7
*/
8
9
public static int omg = 666;//static修饰:设置为类变量(静态变量)。在类加载后就分配了内存。其值对任意对象都相同(最新值)
10
/*访问格式:
11
*类内:变量名
12
*类外:对象名.变量名 || 类名.对象名
13
*/
14
}
15
不同变量在不同方法中的调用
定义成员变量
类名 对象名 = new 类名(构造方法的参数);
此时的对象名为对象句柄(变量标识),即为指向该对象首地址的变量
若为类名 对象名 ;——>这里的对象句柄(对象名变量内的值)为null
重载函数(变量名相同,但形式参数的①个数②顺序③类型不同)
调用方法的变量名是一样的,但形参列表不同
this的使用
- 形式参数与成员变量同名情况,如this.name = name