求大佬指点一下,java protected方法问题。

我测试发现当父类与子类不在同一包中,,两个拥有同父类的子类,在一个子类中不能调用另一个子类从父类继承的protected方法,这是为什么呢?一脸懵逼,求指教

1、protected修饰的方法,能被同包的其他类访问,这时一般通过创建实例来调用
2、protected修饰的方法,只能被不同包的子类访问,这时在子类中直接调用,而不能通过创建父类实例来调用。即子类与父类不同包时,子类从父类继承而来的protected方法只能在本类中使用。换句话说,子类与父类不同包时,其他类(包括子类)不能调用父类或另一个子类实例的protected方法,如TestDemo2子类中不能调用C子类实例的test方法。追问

子类与父类不同包时,其他类(包括子类)不能调用父类或另一个子类实例的protected方法,如TestDemo2子类中不能调用C子类实例的test方法。这是为什么呢?是什么原理导致的?还是硬性规定?

追答

Java硬性规定

追问

0.0..............................额。。。。。。。。。。。谢谢大佬。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-24
protected 是本类、同包其他类或子类是可见的,其他包的类或子类是不可见的。追问

。。。。大哥。protected就算是其他包,他的子类也是可以调用的啊。如图t.test(),没有任何问题。

追答

你在C类中调用一定可以的,你在TestDemo2类中调用就是其它类中了啊。

相似回答