java中的访问权限

在Java中有四种访问控制符,按照访问权限从高到低依次为:public、protected、default(默认)、private。

同时我们把访问时的情况分为四种:①同包下继承 ②同包下非继承 ③不同包下继承 ④不同包下非继承

public:

public是最大的访问权限修饰符,其修饰的成员变量、构造方法和普通方法可在任何一个类中被操作或使用;也就是说上面说的四种类型都可以访问:不同包下继承

java中的访问权限

同包下继承

java中的访问权限

其他不一一举例了。

  • protected:

protected修饰的成员变量、构造方法和普通方法可以在其定义类中、与定义类同包的其它类(可以使子类)中和与定义类不同包但是其子类的类中使用;可以在同包情况下调用

java中的访问权限

java中的访问权限 

在不同包且非继承的情况下则无法调用。

default

默认(友好的)修饰的成员变量、构造方法和普通方法可以在其定义类中和与定义类同包的其它类(可以使子类)中使用; 该访问控制符权限小于protected,因此无法跨包进行调用。

private

private是最小的访问权限控制符,其修饰的成员变量、构造方法和普通方法只能在定义它们的类中被操作或使用;

总的来说,这四种访问控制符的权限可以通过这个表来表示:

java中的访问权限

注意事项 :

另外,关于protected还有一点要注意,如果protected修饰的属性和方法均为非静态的,则只能通过子类实例化对象调用其继承过来的属性和方法,而不能使用父类实例化的对象去调用;如果protected修饰的属性和方法均为静态的,则子类可以通过类(子类类名或父类类名)名直接调用。

例如java中的访问权限