JAVA学习之路

java 访问权限修饰符

2017-12-28  本文已影响842人  洒了油

一直以来,我了解的访问权限是这样的:

这是错误的

不管你愿意不愿意,这幅图表达的信息是不确切的,或者说是不对的。

一个类A的属性和方法在其它类(不妨叫B)中通过A类的实例对A的属性和方法的访问权限与B是不是A的子类没有任何关系。因此,正确的图解应该是这样的:

这是对的

对于private , default ,和public没什么好说的,关键想阐述一下protected修饰符访问权限与子类没有关系。

下面是我测试的过程:

包testa中定义的类A

这是在 testa 包中定义的类A ,其中  int aa 和 helloA()都是用protected来修饰。

而我在 testb 包中定义的类B(继承了A)中以A类型的实例访问属性aa 和 helloA()方法均不能编译成功 :

由图可见,在子类B中试图通过父类A的实例a来访问类A的aa属性和helloA()方法是行不通的。

由于B继承了A,那么B继承了A除构造方法外的一切属性和方法,但是这些属性和方法只有权限在

protected或public修饰的情况下才可以通过B类的实例来访问。

上一篇下一篇

猜你喜欢

热点阅读