访问修饰符
default
即默认,使用对象:类、接口、变量、方法
private
即默认,使用对象:类、接口、变量、方法
不管是否缺省,都只能在当前类中访问
public
使用对象:类、接口、变量、方法
- 无修饰符类,只能被同包中的类使用(类中有private成员字段则不能被包中其他类使用)
- public类能在所有类中使用
protected
不能修饰外部类,使用对象:变量方法
非访问修饰符
static
修饰类方法和类变量
- 静态变量:类变量必须用static声明,且只有一份拷贝,实例对象不想再包含此变量
static数据成员的特点:
a.保存在类内存区中的公共存储单元,类的各个对象访问时是同一个值,可以通过构造方法、实例化和初始化修改该值
b.通过 类名.成员名 访问,不需创建对象
静态字段(static field):类中static修饰的字段
静态字段不属于实例,可以进行修改,是直接改变静态字段的值,即实例共享一个静态字段
不推荐通过实例变量访问静态字段,把静态字段理解为class本身的字段,与实例无关,故采用类名来访问静态字段
- 静态方法:静态方法不能使用类的非静态变量,即不能对非静态方法进行静态使用
原因:static修饰的属性和方法在类初始化时加载,运行main方法时加载类,而类加载时首先为static成员分配内存空间,非静态属性和方法在对象初始化时加载。
方法:可以通过初始化一个实例,然后对非静态方法进行引用
final
修饰类、方法和变量
- final变量:
一旦赋值后,不能再重新赋值
final 修饰符通常和 static 修饰符一起使用来创建类常量
构造函数中赋值 - final方法:
可以被子类继承,但是不能被子类重写
声明 final 方法的主要目的是防止该方法的内容被修改 - final类:不能被继承
abstract
声明抽象类的唯一目的是为了将来对该类进行扩充