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