Java类中成员变量和成员方法的访问权限

时间:2021-03-17 15:10:20

Java访问权限的修饰符public,private,protected,缺省(default)

一个类中的成员变量和成员方法(非静态)被访问分为两种场景,一是在该类中,或其子类中访问,二是创建该类的对象进行访问。

假设:有三个类  class A ,class B extends C,class C     

一、在类中访问

首先,在B类中,可以访问到B类中定义的任意权限的成员变量/方法。然后C类中哪些成员变量/方法可以被访问,需要根据B和C是否在同一个包内来看。如果同包,则可以访问的权限有,public,缺省,protected。否则,访问的权限只有public,protected。

总结:B继承C,B可以访问C内成员变量的权限。

访问权限 同包 不同包
public Y Y
protected Y Y
缺省 Y N
private N N

二、对象的访问权限

假设在A类中创建了对象B,那么可以访问到B以及B继承的类(这里是C)中哪些权限的成员变量/方法。这个必须根据A,B,C所在包的情况判断。

访问权限 A,B,C同包 A,B同包 A,C同包

A与BC不同包

public B,C B,C B,C B,C
protected B,C B C  
缺省 B,C B    
private