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

时间:2014-07-06 16:17:20

标签: java class abstract inner-classes

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

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

2 个答案:

答案 0 :(得分:0)

您无法实例化抽象类,因此要调用该类的实例方法,您需要将其子类化。

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

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

是一种方法,虽然在实践中你可能想要以不同的方式做到这一点,一种方法是JBNizet建议在OuterClass中使用一种方法来返回InnerClass的类型你想要的。

答案 1 :(得分:0)

由于InnerClassnon 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;
        }

    }
}