【问题标题】:how to call inner class's method from static main() method如何从静态 main() 方法调用内部类的方法
【发布时间】:2013-06-06 05:54:34
【问题描述】:

尝试在父类中创建 1 个接口和 2 个具体类。这将使封闭类成为内部类。

public class Test2 {

       interface A{
             public void call();
       }

       class B implements A{
             public void call(){
                   System.out.println("inside class B");
             }
       }

       class C extends B implements A{
             public void call(){
                   super.call();
             }
       }


       public static void main(String[] args) {
              A a = new C();
              a.call();

       }
}

现在我不太确定如何在静态 main() 方法中创建类 C 的对象并调用类 C 的 call() 方法。 现在我遇到问题了:A a = new C();

【问题讨论】:

    标签: java polymorphism inner-classes


    【解决方案1】:

    这里的内部类不是静态的,所以需要创建一个外部类的实例,然后调用new,

    A a = new Test2().new C();
    

    但在这种情况下,您可以将内部类设为静态,

    static class C extends B implements A
    

    那么就可以使用了,

    A a = new C()
    

    【讨论】:

      【解决方案2】:

      要实例化内部类,必须先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:

      OuterClass.InnerClass innerObject = outerObject.new InnerClass();
      

      所以你需要使用:

      A a = new Test2().new C();
      

      请参考Java Tutorial

      【讨论】:

        【解决方案3】:

        你应该这样做

         A a = new Test2().new C();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-25
          • 2013-12-19
          • 2016-07-29
          • 2017-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多