【发布时间】:2011-12-20 00:00:19
【问题描述】:
让我们看一下Java中的以下代码sn-p。它只是总结了在 Outer 类中声明的 Inner 类中的两个数字,并且可以正常工作。
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) 如果将其设为非静态,则在 Inner 类中声明的将不起作用。
为什么Java中只有静态内部类有静态成员而非静态内部类没有?
【问题讨论】:
-
@glowcoder :) 当您从内部类中删除 static 关键字并使其成为非静态类时会发出错误。你试过吗?
-
@Lion 是的,问题在于我在该目录中有另一个名为 Outer 的类,所以我将其称为 OuterTest,但仍在编译 Outer :) Whoopsie :)
-
Java 中没有静态内部类。根据定义,内部类是嵌套的,但不是静态的。您命名为 Inner 的类是静态嵌套类,不是“内部类”,当然也不是“静态内部类”。这使您的问题难以阅读,因为您指的是一个根本不是内部类的 Inner 类(这就是您的命名方式):)
标签: java