因此,在尝试理解抽象类时,我仍然对一件事感到困惑。你什么时候想要声明其抽象类的对象类型。例如
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();
}
}
抽象类型通常用作返回类型(因为您不希望调用者知道返回的具体类型:它可能稍后更改,或者可能根据配置的参数而变化)。
它也经常用作方法参数类型,以便该方法可以接受抽象类型的任何子类的参数并多态地使用它。
当然,作为数组/集合类型,能够将多个子类的实例存储在唯一的集合中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)