public class OuterClass {
abstract class InnerClass {
int value = 20;
public void print(){
System.put.println("Value = " + getValue());
}
public abstract int getValue();
}
}
有人可以帮助我吗,如何从另一个拥有main方法的Java类调用方法print()?
答案 0 :(得分:0)
您无法实例化抽象类,因此要调用该类的实例方法,您需要将其子类化。
为了对其进行子类化,您需要实现其抽象方法。
new OuterClass().new InnerClass()
{
public int getValue()
{
return 1;
}
}.print();
是一种方法,虽然在实践中你可能想要以不同的方式做到这一点,一种方法是JBNizet建议在OuterClass
中使用一种方法来返回InnerClass
的类型你想要的。
答案 1 :(得分:0)
由于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;
}
}
}