类、方法、成员变量和局部变量可用修饰符
修饰符 |
类 |
成员方法 |
构造方法 |
成员变量 |
局部变量 |
Abstract |
√ |
√ |
|
|
|
Static |
|
√ |
|
√ |
|
Public |
√ |
√ |
√ |
√ |
|
Protected |
|
√ |
√ |
√ |
|
private |
|
√ |
√ |
√ |
|
synchronized |
|
√ |
|
|
|
native |
|
√ |
|
|
|
transient |
|
|
|
√ |
|
volatile |
|
|
|
√ |
|
final |
√ |
√ |
|
√ |
√ |
修饰顶层类包括abstract public final
成员方法、成员变量可以由多种修饰符
局部变量只有final
1 访问控制修饰符
1.1 公开级别:用public修饰,对外公开
1.2 受保护级别:用protected修饰,向子类及同一个包中的类公开。
1.3 默认级别:没有访问控制修饰符,向同一个包中的类公开
1.4 私有级别:用private修饰,只有类本身可以访问,不对外公开。
2 Abstract修饰符
2.1 抽象类不能被实例化
2.2 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
2.3 如果子类没有实现父类中的所有抽象方法,子类必须定义为抽象类
2.4 抽象类不能被定义为private final static类型
2.5 没有抽象构造方法
2.6 抽象方法没有方法体
3 Final修饰符
3.1 用final修饰的类不能被继续
3.2 用final修饰的方法不能被子类的方法覆盖
3.3 Private类型的方法都默认为final方法,因而不能被子类的方法覆盖
3.4 Final变量必须被显示初始化,并且只能被赋一次值
4 Static修饰符
4.1 静态变量在内存中只有一个拷贝,在类的所有实例中共享
4.2 在静态方法中不能直接访问实例方法和实例变量
4.3 在静态方法中不能使用this和super关键字
4.4 静态方法不能被abstract修饰
4.5 静态方法和静态变量都可以直接通过类名直接被访问
4.6 当类被加载时,静态代码块只被执行一次。类中不同的静态代码块按它们在类中出现的顺序依次执行