Discuss / Java / 关于protected联合跨包的问题

关于protected联合跨包的问题

Topic source

PBC

#1 Created at ... [Delete] [Delete and Lock User]

首先porotected是关于子类继承方面的问题,即子类及子类的子类可以访问父类的protected方法。

其次跨包是public和default的问题,public允许跨包,default默认是同一包下。

从写代码的实际操作方面来看,我们会发生以下情况及他们的联合:

1. 继承发生在不同包或同一包

2. 调用类去生成实例在不同包或同一包(考虑同一包下,在子类中生成子类实例并调用protected方法和在其他类中生成子类实例并调用protected方法)

3. 实例的引用可能是父类对象

但总体可以看:

一、包层面

跨包了,则不能访问非public方法,因此访问不到protected方法,这与继承无关

二、继承层面

只要在继承这条链路上才考虑protected,具体情况是(同一包的前提下):

在子类中生成子类实例并调用protected方法,可以调用

在其他类中生成子类实例并调用protected方法,不能调用,除非override了(因为override表示他自己写了这个方法)

欢迎大家讨论指正,刚想到的理解思路,可能有纰漏错误之处

PBC

#2 Created at ... [Delete] [Delete and Lock User]

再补充一点就是,还要结合overide protected方法来看,这样应该就全面了

我把我的实验写在了这里:https://github.com/BinchaoPeng/JavaLearn/tree/master/src/protectedTest


  • 1

Reply