修饰符
修饰符分为访问修饰符和非访问修饰符
访问修饰符
用于保护对类、变量方法和构造方法的访问
default:对同一个包内的类可见。接口里的变量会隐式声明为public static final,而接口访问权限为public
private:被声明的方法、变量和构造方法只能被所属类访问,类和接口不能被声明为private。
其主要作用是隐藏雷德实现细节和保护类的数据。
被声明的变量只能通过了类中的getter方法被外部类访问。
public:被声明的类、方法、构造方法和接口能够被任何类访问。
若几个相互访问的public类分布在不同的包的中,则需要导入相应public雷所在的包。类中所有方法和变量都能被子类继承。
Java 程序的 main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类。
protected:可以被其所在包中所有类访问且可以被其他包中的子类访问,protected可以修饰成员数据,构造方法,方法成员,不能修饰类。
非访问修饰符
用于实现除访问以外的其他功能
static:用于声明静态变量和静态方法
final:声明变量赋值后不能被重新赋值,一般和static一起使用创建常量,声明方法不能被子类重写。final类不能被继承
abstract:带有此声明的类不能用来实例化对象,且不能同时被abstract 和 final 修饰 ,一个类中有抽象方法,该类就一定要声明为抽象类。抽象类中可包含抽象方法和非抽象方法。
抽象方法的具体实现只能由子类提供,且不能被声明为static和final
synchronuzed:当有两个线程一同访问同一个带有该修饰符的代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
可声明在访问修饰符后,亦可单独声明。
transient:仅能修饰变量,当变量被该修饰符修饰时,该变量内容会在序列化后无法获得访问
volatile:volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。