Java 修饰符
Java 中的修饰符是用来修改类、方法、变量、构造函数等程序元素的特性的关键字。它们可以用来控制访问权限、继承性、多态性等方面的行为。
访问修饰符(Access modifiers)
访问修饰符用于控制类、接口、变量、方法的作用范围。
- private:私有访问级别,只能在该类内部访问。
- default:默认访问级别,只能被该类、同包类访问。
- protected:受保护的访问级别,只能被同包类或该类的子类访问。****
- public:公共访问级别,可被其他类访问。
| 修饰符 | 修饰对象 | 本类 | 同包类 | 不同包子类 | 其他 |
|---|---|---|---|---|---|
| private | 变量、方法 | ✓ | ✗ | ✗ | ✗ |
| default | 类、接口、变量、方法 | ✓ | ✓ | ✗ | ✗ |
| protected | 变量、方法 | ✓ | ✓ | ✓ | ✗ |
| public | 类、接口、变量、方法 | ✓ | ✓ | ✓ | ✓ |
继承修饰符(Inheritance modifiers)
Java中的继承修饰符用来控制子类对父类成员变量的方法的继承行为。Java提供了两个继承修饰符:final 和 abstract 。
- final:表示该类或成员变量或方法,不能被继承或覆盖。
- abstract:表示该类或方法只提供接口定义,没有实现。其实现需要子类继承实现。
其他修饰符(Other modifiers)
除了访问修饰符和继承修饰符外,Java还有一些其他的修饰符,包括 static, synchronized, volatile 和 transient 。
- static:表示成员变量或方法属于类本身,而不是属于类的任何一个实例。可以通过类名直接访问静态成员变量或方法,而不需要创建类的实例。
- synchronized:用于多线程编程,表示一个方法或代码块只能被一个线程执行。它可以用来解决多线程并发访问共享资源的问题。
- volatile:用于多线程编程,表示一个变量是共享的,可以被多个线程访问和修改。它可以用来保证多线程之间对变量的可见性和有序性。
- transient:用于序列化,表示一个成员变量不需要被序列化。当一个对象被序列化成字节流时, transient 修饰的成员变量会被忽略,不会被写入字节流中。
