访问修饰符:
default、public、private、protected
非访问修饰符
static:
静态方法,静态变量
final:
final变量:
final变量能够显示的初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象。但是 final 对象里的数据可以被改变。也就是说 final 对象的引用不能改变,但是里面的值可以改变。
final 修饰符通常和 static 修饰符一起使用来创建类常量。
final方法:
类中的final方法可以子类继承,但是不能被子类修改
声明final方法的主要目的是防止方法被修改
final类
final类不能被继承
abstrac修饰符
抽象类:
抽象类不能用来实例化,声明抽象类的唯一目的是将来对该类进行扩充。
一个类不能同时被abstract和final修饰
抽象方法:
抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。
抽象方法不能被声明成final 和 abstract
任何继承抽象类的子类,必须实现父类的所有抽象方法,除非该子类也是个抽象类
如果一个类中含有抽象方法,那么这个类一定是个抽象类,但是抽象类不一定含有抽象方法。
synchronized:
synchronized关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。
transient
序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
volatile :
修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个 volatile 对象引用可能是 null。