JAVA访问权限控制
|
Java的访问权限控制修饰符,从最大权限到最小权限依次是:public、protected、包访问权限(默认,没有关键字)和private。对于类的访问权限只能是:public和包访问权限(但内部类可以是private或protected的);对于类中的成员的访问权限可以是上述的四种。下面是各种访问权限的作用。
一、public修饰的类:
作用域
| 当前类 | 同一package普通类 | 其他package普通类 | 同一package子孙类 | 其他package子孙类 |
public | √ | √ | √ | √ | √ |
protected | √ | √ | × | √ | √ |
默认 | √ | √ | × | √ | × |
private | √ | × | × | × | × |
二、无修饰符(默认包访问权限)的类:
作用域
| 当前类 | 同一package普通类 | 其他package普通类 | 同一package子孙类 | 其他package子孙类 |
public | √ | √ | × | √ | × |
protected | √ | √ | × | √ | × |
默认 | √ | √ | × | √ | × |
private | √ | × | × | × | × |
Java中的访问修饰符(访问控制符)包括:public,protected,default,private。分别代表了不同的访问权限。如果省略,则被视为使用了默认的default作为访问修饰符。
从字面含义上面理解,很显然,这几个访问控制符(public -> protected -> default ->private)所代表的访问权限是依次递减的。那么,所谓的访问权限是相对什么来说的呢?这个问题的答案就是,这里的权限是针对是不是同一个类、是不是属于同一个包、是不是存在父类子类关系。
public:权限最大,不受类、包等的限制,都可以访问。
protected:次于public,限制之处在于如果不再同一个包中,只有和它存在继承关系的子类才可以访问它。
default:进一步受限,必须是同一个包才能访问。
private:这个就将权限限制在了类中,只有同一个类中的成员才能访问。
下面用表格更加直观地展现一下:
| private | default | protected | public |
同一个类中的成员 | Y | Y | Y | Y |
同一个包中的成员 |
| Y | Y | Y |
| |
| Y | Y |
全局 | | | | Y |