0

可能重复:
为什么我们不能在内部类中有静态方法?

我不知道为什么内部类不能有静态方法。为什么是错的?

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不是内部类的变量可以访问?有什么问题。

4

1 回答 1

1

这里的问题是您的非静态内部类有一个静态方法,而您正试图从外部类的静态方法调用它。

非静态内部类仅在外部类实例的上下文中是“相关的”,因为它可以访问外部类的非静态方法和this外部类的方法(使用A1.this)。

底线:如果你想这样做也将内部类标记为静态:

static class B1
{
     static void fun()
    {
        System.out.println("HIII");
    }
}

现在你可以从外部类的静态方法中调用它的静态方法。

于 2012-05-20T10:21:55.450 回答