为什么我不能实例化一个抽象类,而是创建一个抽象类的数组?

public abstract class Game{
  ...
}

Game games = new Game(); //Error
Game[] gamesArray = new Game[10]; //No Error

最佳答案

Game[] gamesArray = new Game[10];

实例化意味着创建一个类的实例。在上述情况下,您刚刚声明了类型为gamesArrayGame,大小为10(仅是引用,而没有其他内容)。这就是为什么它不会引发任何错误。

尝试执行时会出现错误
gamesArray[0] = new Game(); // because abstract class cannot be instantiated



稍后,您可以执行以下操作
gamesArray[0] = new NonAbstractGame(); // where NonAbstractGame extends the Games abstract class.

这是非常允许的,这就是为什么您首先要参加抽象类的原因。

10-07 15:30