abstract class Two {
Two() {
System.out.println("Two()");
}
Two(String s) {
System.out.println("Two(String");
}
abstract int display();
}
class One {
public Two two(String s) {
return new Two() {
public int display() {
System.out.println("display()");
return 1;
}
};
}
}
class Ajay {
public static void main(String ...strings ){
One one=new One();
Two two=one.two("ajay");
System.out.println(two.display());
}
}
我们无法实例化一个抽象类,那么为什么方法中的方法二二(String s)返回抽象类的对象两个
答案 0 :(得分:1)
正如你的问题标题所暗示的那样,你实例化的是一个匿名的内部类,它扩展自两个,而不是两个。
答案 1 :(得分:0)
正如您的标题所示,方法two()
创建了一个扩展Two
的匿名类的实例(并实现了abstract
方法display()
。
这个One
实现具有几乎相同的结果(除了现在命名该类)。
class One {
public Two two(String s) {
return new MyTwo();
}
private static class MyTwo extends Two {
public int display() {
System.out.println("display()");
return 1;
}
}
}