我不知道为什么内部类不能有静态方法。为什么这是错的?
class A1
{
class B1
{
static void fun()
{
System.out.println("HIII");
}
}
public static void main(String[] args)
{
A1 a = new A1();
A1.B1 b = new a.B1();
b.fun();
}
}
如果外部类对象可以访问静态方法而变量y
而不是内部类可以访问?有什么问题。
答案 0 :(得分:0)
这里的问题是你的非静态内部类有一个静态方法,你试图从外部类的静态方法中调用它。
非静态内部类仅在外部类的实例的上下文中是“相关的”,因为它可以访问外部类的非静态方法和外部类的this
(使用A1.this
)。
底线:如果你想这样做,那么将内部类标记为静态:
static class B1
{
static void fun()
{
System.out.println("HIII");
}
}
现在你可以从外部类的静态方法中调用它的静态方法。