本文介绍了抽象类数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

公共抽象类游戏{...}游戏游戏 = 新游戏();//错误游戏[] gamesArray = 新游戏[10];//没有错误
解决方案
Game[] gamesArray = new Game[10];

实例化意味着创建一个类的实例.在上面的场景中,您刚刚声明了一个 Game 类型的 gamesArray,大小为 10(只是引用,没有别的).这就是为什么它不会抛出任何错误.

尝试执行时会出现错误

gamesArray[0] = new Game();//因为抽象类不能被实例化

但是创建一个抽象类的数组?

以后,你可以做这样的事情

gamesArray[0] = new NonAbstractGame();//其中 NonAbstractGame 扩展了 Games 抽象类.

这是非常允许的,这就是您首先要进入抽象类的原因.

Why can I not instantiate an abstract class but make an array of the abstract class?

public abstract class Game{
  ...
}

Game games = new Game(); //Error
Game[] gamesArray = new Game[10]; //No Error
解决方案
Game[] gamesArray = new Game[10];

Instantiation means creation of an instance of a class. In the above scenario, you've just declared a gamesArray of type Game with the size 10(just the references and nothing else). That's why its not throwing any error.

You'll get the error when you try to do

gamesArray[0] = new Game(); // because abstract class cannot be instantiated


Later on, you can do something like this

gamesArray[0] = new NonAbstractGame(); // where NonAbstractGame extends the Games abstract class.

This is very much allowed and this is why you'll be going in for an abstract class on the first place.

这篇关于抽象类数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 16:56