【问题标题】:inner class and static method java [duplicate]内部类和静态方法java [重复]
【发布时间】:2012-05-27 04:54:39
【问题描述】:

可能重复:
Why cant we have static method in an inner class?

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

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 而不是内部类获取访问权限?有什么问题。

【问题讨论】:

标签: java


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 对不起,我无法理解“非静态内部类仅在外部类实例的上下文中是“相关的”,因为它可以访问外部类的非静态方法以及外部类的 this类(使用 A1.this)。“ PLZZ ELABORATE
猜你喜欢
  • 2010-11-24
  • 2015-04-28
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多