//first package is
package package1;
public class ClassA
{
public void displayA()
{
System.out.println("Class A");
}
}
//second package is
package package3;
public class ClassC
{
protected int m=10;
public void displayC()
{
System.out.println("Class C");
System.out.println("m="+m);
}
}
//importing the packages
import package1.ClassA;
import package3.*;
class PackageTest3
{
public static void main(String args[])
{
ClassA objA=new ClassA();
ClassC objC=new ClassC();
objA.displayA();
objC.displayC();
}
}
Output:
Class A
Class C
m=10
我的问题是在上面的程序中,即使package1中classA中的成员(int m)受到保护,它仍然可以在PackageTest3类中访问。我没有得到这个。任何人都可以帮助我吗?
答案 0 :(得分:3)
该字段被声明为受保护,这将限制对从ClassC
派生的类或在同一包中的字段的访问。 但主要方法是访问一个公共方法,该方法将受保护字段的值打印到控制台, 直接访问受保护字段。
protected
访问修饰符将阻止访问该字段,如以下示例所示:
public static void main(String args[])
{
ClassA objA = new ClassA();
ClassC objC = new ClassC();
objA.displayA(); //fine
objC.displayC(); //fine
System.out.println(objC.m); //Not Allowed, prevented by protected access
}