java-问:抽象类对象的初始化代码?
作者:互联网
在此类中,抽象类对象通过重写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类的单个实例,则使用内联定义会更容易.
标签:abstract-class,java 来源: https://codeday.me/bug/20191118/2031545.html