gpt4 book ai didi

java - Q : Abstract class object initiation code?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:12 25 4
gpt4 key购买 nike

在这个类中抽象类对象是通过覆盖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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com