2013-02-18 28 views
1
class SomeClass1 { 
    void method1() { } 
    public void method2() { } 
    private void method3() { } 
    protected void method4() { } 
} 
class DemoClass{ 
    public static void main(String[] parameters) { 
    SomeClass1 sc = new SomeClass1(); 
    sc.method1(); 
    sc.method2(); 
    sc.method4(); 
    } 
} 

受保护的方法只能由继承超类的类访问。正如我们在这里看到的,DemoClass不会扩展SomeClass。但是,它能够访问受保护的方法。这怎么可能?为什么不是下面的java代码产生错误? (访问修饰符)

+1

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html – 2013-02-18 01:04:30

回答

11

这是因为他们都在同一个包:

protected修饰符指定的成员只能在其自己的包内访问(如包私营),此外,通过的子类它的类在另一个包中。

Link to the documentation)。

+0

非常感谢您的帮助。这个定义真的帮了我很多 – 2013-02-18 15:47:20

+0

@TarunMohandas欢迎您!如果您找到有用的答案,请考虑点击旁边的灰色复选标记来接受它。这会告诉其他人你不再积极寻找改进的答案,并为Stack Overflow赢得一个全新的徽章。 – dasblinkenlight 2013-02-18 15:48:58

+0

完成了。对不起,我是新来的SO – 2013-02-18 15:58:02

相关问题