为什么我不能实例化一个抽象类,而是创建一个抽象类的数组?
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.
这是非常允许的,这就是为什么您首先要参加抽象类的原因。