Java修饰符与访问修饰符

Java语言提供了很多修饰符,修饰符用于类和类的成员(构造方法、方法、数据和类一级的块),但final修饰符也可以用在方法中的局部变量上。

可以用在类上的修饰符称为类修饰符( class modifier)。
可以用在方法上的修饰符称为方法修饰符( method modifier)。
可以用在数据域上的修饰符称为数据修饰符( data modifier)。
可以用在类一级块上的修饰符称为块修饰符( block modifier)。

修饰符总结

码谱对Java修饰符可以修饰的内容进行了总结。

修饰符 构造方法 方法 数据 解释
public 类、构造方法、方法或数据域在任何包任何程序中都可见
protected 构造方法、方法或数据域在所属包中可见,或者在任何包中该类的子类中可见
(default) 类、构造方法、方法或数据域在所在的包中可见
private 构造方法、方法或数据域只在所在的类中可见
static 定义类方法、类数据域或静态初始化模块
final final类不能被继承。 final方法不能在子类中修改。final数据域是常量
abstract 抽象类必须被继承。抽象方法必须在具体的子类中实现
native 用 native修饰的方法表明它是用Java之外的语言实现的
synchronized 同一时间只有一个线程可以执行这个方法
strictfp 使用精确浮点数计算模式,保证在所有的Java虚拟机中计算
transient 标记实例数据域,使其不进行序列化
  • 默认(没有修饰符)、 public、 private以及 protected等修饰符称为可见或者可访问性修饰符,因为它们给定了类,以及类的成员是如何被访问的。
  • public、 private、 protected、 static、final以及 abstract也可以用于内部类
  • 默认访问没有任何修饰符与之关联。例如: class Test{}

访问修饰符

修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
public
protected
(default)
private
protected
  • 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
  • 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

访问修饰符中,protected是比较难以掌握的,需要更多的场景理解。

转载请注明出处:码谱记录 » Java修饰符与访问修饰符