java保护从子类的子类访问成员
我正在为SJCP6做准备,我发现了一个到目前为止还没有看到的细节,用于从声明成员的类的子类访问受保护的成员。我很清楚,当我们试图通过继承访问受保护的成员时,只能从另一个包访问它,但对于该子类的子类,我们仍然可以访问它吗
书上说:
Once the subclass-outside-the-package inherits the protected member, that member (as inherited by the subclass) becomes private to any code outside the subclass, with the exception of subclasses of the subclass.
我的问题是关于子类的子类,这些子类如何看待成员,也被保护?他们能进入吗?因为它说成员对于子类之外的任何代码都是私有的,子类的子类除外,所以,他们是如何看待它的
# 1 楼答案
如果
B
是A
的子类,而C
是B
的子类,那么C
也是A
的子类,并且可以访问A
的protected
成员# 2 楼答案
在超类中声明受保护的变量、方法和构造函数只能由其他包中的子类以及子类的子类访问 或受保护成员类包中的任何类。 我刚刚在eclipse中为这个案例创建了一个示例,去试试吧。。 例如
包测试中的类MyClass有一个名为get method的受保护方法
同一个包中的类A扩展了MystaticClass,可以在那里访问受保护的方法
现在,扩展另一个包中的A的类B也可以访问相同的方法
现在c类在另一个包中再次扩展B类也可以访问它。。 包装测试
因此,它可以在另一个包的子类的子类中访问