访问权限
Java中有三种访问权限修饰符:private、protected、public,如果不加访问修饰符,表示包级别可访问。
访问修饰符可以加在类或类成员(字段和方法)上。
private
在同一类内可见。可以作用在变量、方法上,不能修饰外部类。
public
对所有类可见。可以作用在类、变量、方法上。
protected
对同一包内的类和所有子类可见。可以作用在变量、方法,不能修饰外部类。
访问权限说明表:
修饰符 | 当前类 | 同一包内 | 同一包内(子孙类) | 不同包(子孙类) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N | N |
private | Y | N | N | N | N |
默认 | Y | Y | Y | N | N |
protected详解
protected 是最难理解的一种 Java 类成员访问权限修饰词,很多介绍Java语言的书籍(包括《Java编程思想》)都对protected介绍的比较的简单,基本都是一句话,就是: 被 protected 修饰的成员对于本包和其子类可见。
protected的可见性在于两点:
- 基类的protected成员是包内可见的,并且对子类可见;
- 若子类与基类不在同一包内,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
访问控制和继承
- 父类中声明为public的方法在子类中也必须为public。
- 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public,不能声明为private。
- 父类中声明为private的方法,不能被子类继承。
网友评论