修饰符
权限修饰符
在 Java 中,可以通过权限修饰符来控制对类本身,和类中的属性和方法的访问权限。
权限修饰符一共有四种:
- public,公有的
- protected,受保护的
- 默认不写
- private,私有的
其中,只有 public 修饰符和「默认不写」能够修饰类本身。
权限修饰符的修饰范围如下:
| 修饰符 | 当前类 | 同一包内的其他类 | 不同包的子孙类 | 其他包的任意类 |
|---|---|---|---|---|
| public | Y | Y | Y | Y |
| protected | Y | Y | Y | N |
| 默认不写 | Y | Y | N | N |
| private | Y | N | N | N |
tips:通过查看第一行代码package packageName;的包名是否相同来判断类是否处于同一个包中。
特征修饰符
final,最终的
- 可以修饰类本身,变量,类的属性和方法
- 被修饰的类不能够被继承
- 被修饰的变量是常量,不可修改。如果没有初始值,则有一次赋值机会
- 被修饰的属性必须有初始值,否则编译报错
- 被修饰的方法不能被子类重写
static,静态的
- 可以修饰类的属性、方法和程序块,内部类,它们被称为静态元素
- 静态元素存储在静态区中,每一个类都有自己的区域,与其他类不冲突
- 静态元素只有一份,全部类对象和类本身共享,可以通过类本身直接访问
- 垃圾回收机制无法管理静态区,可以粗暴的认为静态元素就是常驻内存
native,本地的
- 可以修饰类的方法
- 被修饰的方法是通过非 Java 代码实现的
abstract,抽象的,非具体的
- 可以修饰类本身、类的方法
- 被修饰的方法没有方法体
- 虽然 native 修饰符修饰的方法也没有方法体,但它不是抽象方法
- 抽象方法必须放在抽象类(或接口)中
- 抽象类不能被实例化,因此抽象类只能通过子类继承去做事
transient,瞬时的,短暂的,与对象的序列化有关
synchronized,同步的,主要用于线程
volatile,不稳定的,主要用于线程