在这个类中抽象类对象是通过覆盖getNum()来实例化的,这样做的目的是什么?
public abstract class AbstractTest {
public int getNum() {
return 45;
}
public static void main(String[] args) // main function
{
AbstractTest t = new AbstractTest() // From this point didn't understand
{
public int getNum() // function
{
return 22;
}
}; //use of this
System.out.println(t.getNum()); // output
}
}
最佳答案
main()
方法中的实例化只是抽象类 AbstractTest
的具体实例的内联类定义。需要明确的是,变量 t
是一个匿名的、非抽象类的实例。以下代码将实现相同的目的:
public class ConcreteTest extends AbstractTest {
@Override
public int getNum() {
return 22;
}
}
public static void main (String [] args) {
ConcreteTest t = new ConcreteTest();
System.out.println(t.getNum());
}
在开发过程中,有些情况下必须创建正式的类定义可能很麻烦。例如,如果您只需要抽象 AbstractTest
类的单个实例,使用内联定义会更容易。
关于java - Q : Abstract class object initiation code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36276060/