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());
}
}
we cannot instantiate an abstract class then why is the function Two two(String s) able to create an instance of abstract class Two ????
It does not create an instance of abstract
Two
. It creates a concrete, anonymous class that extendsTwo
and instantiates it.It's almost equivalent to using a named inner class like this: