gpt4 book ai didi

java - protected 类成员可以像 Java 中的公共(public)类成员一样被访问

转载 作者:行者123 更新时间:2023-12-02 10:54:30 24 4
gpt4 key购买 nike

按照惯例,Java 中的 protected 类成员只能从声明它的类内部或其直接后代继承类进行访问。但是,可以从其他类访问以下示例中的 protected 类成员,而无需使用 Java 中的任何继承概念。

package classmembers;

final class Demo
{
private int a=10;
protected int b=20;
public int c=30;

public Demo(int a, int b, int c)
{
this.a=a;
this.b=b;
this.c=c;
}

protected void show()
{
System.out.println("a = "+a);
}
}

final public class Main
{
public static void main(String[] args)
{
Demo d=new Demo(10, 20, 30);

//System.out.print("\n"+d.a); Wrong, since a has private access

d.show(); //Working, even if it is protected

System.out.print("\n"+d.b); //Working, even if it is protected

System.out.print("\n"+d.c); //Working, since it is public, obviously
}
}
<小时/>

在此示例中,int 类型的 protected 类成员 b 和类 Demo 中声明的方法 show() 通过 main() 方法访问,即使它们被显式声明为 protected 并且没有使用任何继承概念。

<小时/>

在这样的场景下,Java中的 protected 类成员和公共(public)类成员有什么区别。它们相同吗?

最佳答案

这是因为 protected 成员也可以从同一包中的类访问。 (MainDemo 都在 classmembers 包中。)

In such a scenario, what is the difference between a protected class member and a public class member in Java. Are they same?

仅当类属于不同的包时,修饰符才会有所不同。

看一下官方教程中的表格:Controlling Access to Members of a Class

Modifier        Class    Package    Subclass     World
------------------------------------------------------
public Y Y Y Y <---.
|---- difference!
protected Y Y Y N <---'
---

no modifier Y Y N N
private Y N N N

关于java - protected 类成员可以像 Java 中的公共(public)类成员一样被访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8066246/

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