gpt4 book ai didi

java - 何时使用抽象类作为类型

转载 作者:行者123 更新时间:2023-11-30 06:11:56 25 4
gpt4 key购买 nike

因此,在尝试理解抽象类时,我仍然对一件事感到困惑。您什么时候想声明其抽象类的对象类型。例如

public abstract class GameObject
{
public abstract void draw();
public static void main(String[] args)
{
GameObject player = new Player();
Menu menu = new Menu();
}

}
public class Player extends GameObject
{
override
public void draw()
{
// Something
}

}
public class Menu extends GameObject
{
override
public void draw()
{
// Something
}
}

通常,我只会实例化一个播放器类型的播放器对象。但是,我已经看到抽象类被用作新对象的变量类型。你什么时候会选择这样做?谢谢!

最佳答案

每次您需要将变量作为抽象类的实例时,您都会这样做,但并不真正关心具体类型是什么(并且不希望其余代码采用特定的子类用来)。例如:

GameObject[] gameObjects = new GameObject[] {new Menu(), new Player()};
drawAll(gameObjects);

...

private void drawAll(GameObject[] gameObjects) {
for (GameObject gameObject : gameObjects) {
gameObject.draw();
}
}

抽象类型通常用作返回类型(因为您不希望调用者知道返回的具体类型:它可能会在以后更改,或者可能会根据配置的参数而变化)。

它也常被用作方法的参数类型,使方法可以接受抽象类型的任何子类的参数,并以多态方式使用它。

当然,作为数组/集合类型,能够将多个子类的实例存储在一个唯一的集合中。

关于java - 何时使用抽象类作为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457393/

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