繁体   English   中英

如何从另一个类调用抽象内部类的方法?

[英]How to call a method of an abstract inner class from another class?

public class OuterClass {
     abstract class InnerClass {
         int value = 20;
         public void print(){
                 System.put.println("Value = " + getValue());
         }
         public abstract int getValue();
      }
 }

有人可以帮助我,如何从另一个具有main方法的Java类中调用方法print()?

您无法实例化一个抽象类,因此要调用该类的实例方法,您需要对其进行子类化。

为了对其进行子类化,您需要实现其抽象方法。

new OuterClass().new InnerClass()
{
   public int getValue()
   {
      return 1;
   }
}.print();

要做到这一点,但在实践中,你可能会想这样做不同的,一个办法是为JBNizet建议对有方法的一种方式OuterClass返回的类型InnerClass你想要的。

由于InnerClass就是non static ,你需要的一个实例OuterClass访问它。 接下来,由于它是抽象类,因此需要一个可以实际创建其实例的子类。 从子类中,您可以使用super调用超类方法。

我能想到的一种方法是

public class HelloWorld {


    public static void main(String args[]) {

        OuterClass outerClass = new OuterClass();
        InnerSubClass myInstance = outerClass.new InnerSubClass();
        myInstance.print();
    }
}

class OuterClass {

    private InnerSubClass myInstance;

    abstract class InnerClass {
        int value = 20;
        public void print(){
                System.out.println("Value = " + getValue());
        }
        public abstract int getValue();
     }

    class InnerSubClass extends InnerClass{

        @Override
        public void print(){
            super.print();
            System.out.println("In SUbclass");
        }

        @Override
        public int getValue() {
            return 0;
        }

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM