簡體   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