[英]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.