gpt4 book ai didi

java - 为什么Java中只有静态内部类才有静态成员?

转载 作者:行者123 更新时间:2023-12-02 09:39:40 25 4
gpt4 key购买 nike

Possible Duplicate:
Why does Java prohibit static fields in inner classes?

让我们看一下下面的 Java 代码片段。它只是将 Inner 中的两个数字相加。 Outer 内声明的类类并且按预期工作得很好。

package staticfields;

final class Outer
{
final public static class Inner
{
private static int x;
private static int y;

public Inner(int x, int y)
{
Inner.x=x;
Inner.y=y;
}

public void sum()
{
System.out.println(x+y);
}
}
}

final public class Main
{
public static void main(String[] args)
{
new Outer.Inner(5, 10).sum();
}
}
<小时/>

当我尝试从 Inner 中删除 static 关键字时类,它会发出一个编译时错误,表明内部类不能有静态声明意味着内部类中声明的静态字段(x和y)不起作用,如果它是这样的话非静态。

<小时/>

为什么Java中只有静态内部类有静态成员,而非静态内部类没有?

最佳答案

An inner class is a nested class that is not explicitly or implicitly declared static. Inner classes may not declare static initializers (§8.7) or member interfaces. Inner classes may not declare static members, unless they are compile-time constant fields"

内部类属于外部类的实例,因此这是有道理的。

关于java - 为什么Java中只有静态内部类才有静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569203/

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