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

为什么子类中不能访问另一个包中父类中的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条)

报告相同问题?