gpt4 book ai didi

java - 静态嵌套类和普通类的区别

转载 作者:搜寻专家 更新时间:2023-11-01 02:24:00 24 4
gpt4 key购买 nike

我知道这是一个有点重复的问题,但我想以非常具体的方式提问,以澄清一个非常重要的观点。主要问题是:除了访问包含类中的私有(private)静态字段之外,当一个是静态嵌套类而另一个是常规顶级类时,其他方面相同的类之间是否有任何区别?

// ContainingClass.java
public class ContainingClass {
private static String privateStaticField = "";

static class ContainedStaticClass {
public static void main(String[] args) {
ContainingClass.privateStaticField = "new value";
}
}
}

// OutsideClass.java
public class OutsideClass {
public static void main(String[] args) {
ContainingClass.privateStaticField = "new value"; // DOES NOT COMPILE!!
}
}

换句话说:ContainedStaticClass 可以访问或执行的操作与 OutsideClass 可以访问或执行的操作之间唯一的区别是 OutsideClass 不能直接访问ContainingClass.privateStaticField?或者是否存在其他不常讨论或遇到的细微差异?

最佳答案

您的陈述是正确的:静态类和外部类之间的唯一区别是对类和封闭类成员的访问。 static 关键字声明该类不是内部类:它实际上是封闭类范围内的外部类。

参见 https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.5.1

关于java - 静态嵌套类和普通类的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335937/

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