为什么子类中不能访问另一个包中父类中的protected方法

2025-03-24 00:07:53
推荐回答(2个)
回答1:

  这个是java语言规范的规定了:

  引用

  A protected member or constructor of an object may be accessed from outside the package in which it is declared only by code that is responsible for the implementation of that object.

  protected,算是默认的访问作用域的超集,他们在相同包下时,都可以访问所声明的成员;但对于不同包的访问,默认访问域就不行,protected也必须是通过继承关系来访问。

  TestBase base= new Child();
  base.printProtected(); //编译报错

  这个会出错,是因为你在不同包里访问TestBase声明的printProtected方法,所以不行,你可以在你子类的printProtected通过super来访问父类的方法。

回答2:

public 所有类都可以访问protected 同一包内的类和子类(包括子类的子类)可以访问(default) 同一包内的类private 仅本类和本类的内部类可以访问