0
//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 类中访问。我没有得到这个。有人可以帮助我吗?

4

1 回答 1

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
}
于 2013-08-11T20:32:14.483 回答