gpt4 book ai didi

java - 为什么java中包中的类的 protected 成员可以在其他包类中访问?

转载 作者:行者123 更新时间:2023-12-01 23:39:27 24 4
gpt4 key购买 nike

//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中访问。我不明白这个。有人可以帮助我吗?

最佳答案

该字段被声明为 protected ,这将限制从 ClassC 派生的类或位于同一包中的类对该字段的访问。 但是主要方法是访问一个将 protected 字段的值打印到控制台的公共(public)方法,它直接访问 protected 字段。

如以下示例所示,对字段的访问将被 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
}

关于java - 为什么java中包中的类的 protected 成员可以在其他包类中访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com