meifage 2011-08-24 08:41 采纳率: 100%
浏览 237
已采纳

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

package java1;

public class TestBase
{

protected void printProtected()
{
System.out.println("printProtected!");

}
}
import java1.TestBase;

class Child extends TestBase
{
protected void printProtected()
{
System.out.println("child printProtected!");
}
public static void main(String[] args)
{
TestBase base= new Child();
base.printProtected(); //编译报错
}
}

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

  • 写回答

5条回答 默认 最新

  • myali88 2011-08-24 09:32
    关注

    这个是java语言规范的规定了:
    [quote]
    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.
    [/quote]
    protected,算是默认的访问作用域的超集,他们在相同包下时,都可以访问所声明的成员;但对于不同包的访问,默认访问域就不行,protected也必须是通过继承关系来访问。

    [code="java"]
    TestBase base= new Child();
    base.printProtected(); //编译报错
    [/code]
    这个会出错,是因为你在不同包里访问TestBase声明的printProtected方法,所以不行,你可以在你子类的printProtected通过super来访问父类的方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 luckysheet
  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题