抽象类的数组
2022-09-03 12:34:07
为什么我不能实例化抽象类,而是创建抽象类的数组?
public abstract class Game{
...
}
Game games = new Game(); //Error
Game[] gamesArray = new Game[10]; //No Error
为什么我不能实例化抽象类,而是创建抽象类的数组?
public abstract class Game{
...
}
Game games = new Game(); //Error
Game[] gamesArray = new Game[10]; //No Error
Game[] gamesArray = new Game[10];
实例化意味着创建类的实例。在上面的场景中,您刚刚声明了一个具有大小的类型(只是引用,没有其他内容)。这就是为什么它没有抛出任何错误。gamesArray
Game
10
当你尝试这样做时,你会得到错误
gamesArray[0] = new Game(); // because abstract class cannot be instantiated
但是制作一个抽象类的数组?
稍后,您可以执行类似操作
gamesArray[0] = new NonAbstractGame(); // where NonAbstractGame extends the Games abstract class.
这是非常允许的,这就是为什么你首先要去一个抽象类。
因为当您创建某种对象类型的数组时,您不会尝试实例化对象。你所做的只是一些插槽来放置引用。
new Game[10];
为引用制作了10个插槽,但它不会使单个.Game
Game