修饰符用来定义类、成员变量或方法。
Java语言中修饰符主要分为两类:访问修饰符和非访问修饰符。
访问控制修饰符
范围 | private | default | protected | public |
---|---|---|---|---|
同一类中 | T | T | T | T |
同一个包内 | F | T | T | T |
同一个包内和子类中 | F | F | T | T |
所有类 | F | F | F | T |
private
- 类和接口不能声明为private;
default
- 接口的成员变量都隐式声明为public static final;
- 接口里的方法默认情况下访问权限为public;
protected
- 类和接口不能声明为protected;
- 接口的成员变量和成员方法不能声明为protected;
public
访问权限继承
- 父类中声明为public的属性在子类中也必须是public;
- 父类中声明为protected的属性在子类中要么声明为protected,要么声明为public。不能声明为private;
非访问控制修饰符
static
- 静态方法中不能使用非静态变量;
final
- final修饰的变量只能被初始化一次,之后不能修改;
- 若final修饰的变量是一个对象引用,则此引用不能再指向其他对象,但此对象中的属性是可以改变的;
- final修饰的成员方法,可以被子类继承,但不能重写(override);
- final修饰的类不能被继承;
abstract
- 抽象类不能被实例化;
- 一个类不能同时被final和abstract修饰;
- 抽象类没必要一定有抽象方法,但有抽象方法的类一定得是抽象类;