书上说protected访问控制是可以被跨包中的子类访问的
我先构造一个包
package org.it.example;
public class Test
{
protected void Print()
{
System.out.print("test");
}
}
然后再写一个包
package org.it;
import org.it.example.*;
public class TestPackage extends Test {
public static void main(String agrs[])
{
new Test().Print();
//new TestPackage().Print();
}
}
其中用TestPackage基础另一个包中的Test方法,但是为什么我在子类的main方法中用父类的方法调用它自己的方法时却提示Print方法是protected无法被访问,但是如果写成用子类对象调用就可以,请问why?
我先构造一个包
package org.it.example;
public class Test
{
protected void Print()
{
System.out.print("test");
}
}
然后再写一个包
package org.it;
import org.it.example.*;
public class TestPackage extends Test {
public static void main(String agrs[])
{
new Test().Print();
//new TestPackage().Print();
}
}
其中用TestPackage基础另一个包中的Test方法,但是为什么我在子类的main方法中用父类的方法调用它自己的方法时却提示Print方法是protected无法被访问,但是如果写成用子类对象调用就可以,请问why?
new TestPackage().Print();//这个能访问是因为具有继承关系;protected修饰的成员能被之类所访问,即使跨包也是如此