Java的修饰符

一般把Java的修饰符分为两类,包括访问修饰符非访问修饰符

修饰符用来定义类、方法或者变量,通常放在语句的最前端

相关链接:https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Modifier.html

访问修饰符

name description
default 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法
private 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public 对所有类可见。使用对象:类、接口、变量、方法
protected 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

默认的访问修饰符是public

方法继承的规则

  • 父类中声明为 public 的方法在子类中也必须为 public。
  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
  • 父类中声明为 private 的方法,不能够被子类继承。

非访问修饰符

在Java中,有7个非访问修饰符

name description
static static 关键字用来声明独立于对象的静态变量/方法
final 变量/方法一旦赋值后,不能被重新赋值/改写。被 final 修饰的实例变量/方法必须显式指定初始值。
abstract 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
synchronized 声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。
transient 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。 该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。
volatile volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
native native是与C++联合开发的时候用的!使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用