java 访问权限修饰符

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

这是错误的

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

一个类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类的实例来访问。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容