gpt4 book ai didi

Java:访问修饰符困惑

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

根据this在 Java 文档的教程中,可以在 Class、Package、Sublcas 和 World 级别访问公共(public)成员。但是假设我创建了两个类,如下所示:

public class TesterClass
{
public int someNumber = 5;
}

public class AnotherClass
{
public static void main( String [] args )
{
System.out.println( someNumber );
}
}

并将它们保存在同一位置。当编译AnotherClass时,会抛出一个错误,指出变量someNumber无法识别。那么,为什么 Java 文档声明公共(public)访问修饰符允许随处访问呢?我知道我做错了,但是到底到底发生了什么?

最佳答案

这两个类没有任何方式、形状或形式相关。

您需要在 AnotherClass 中创建 TesterClass 的实例,然后通过引用访问该变量。

public class AnotherClass
{
public static void main( String [] args )
{
TesterClass classRef = new TesterClass();
System.out.println(classRef.someNumber);
}
}

这将起作用并产生 5 的输出。

但是,如果我们将 count 变量的访问修饰符从 public 更改为 private,然后尝试执行相同的操作,则此操作将不再有效。除了声明它的类之外,任何其他类都无法访问 count 变量。

<小时/>

为了扩展 Sotirios Delimanolis 的评论,请考虑以下场景:

public class TesterClass
{
public int someNumber = 5;
}

public class CounterExampleClass
{
public int someNumber = 3;
}

public class AnotherClass
{
public static void main( String [] args )
{
System.out.println( someNumber );
}
}

按照你的逻辑,3或5会打印什么?你不能说。因此,变量是通过引用变量访问的,引用类指示可以访问哪些字段。即

    TesterClass tRef = new TesterClass();
tRef.someNumber; //5

CounterExampleClass cRef = new CounterExampleClass();
cRef.someNumber; //3

关于Java:访问修饰符困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513576/

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