este problema se puede resolver de diversas maneras, pero en este caso te compartimos la resolución más completa en nuestra opinión.
Solución:
Game[] gamesArray = new Game[10];
La creación de instancias significa la creación de una instancia de una clase. En el escenario anterior, acaba de declarar un gamesArray
de tipo Game
con el tamaño 10
(solo las referencias y nada más). Es por eso que no arroja ningún error.
Obtendrá el error cuando intente hacer
gamesArray[0] = new Game(); // because abstract class cannot be instantiated
pero haz un array de la clase abstracta?
Más tarde, puedes hacer algo como esto.
gamesArray[0] = new NonAbstractGame(); // where NonAbstractGame extends the Games abstract class.
Esto está muy permitido y es por eso que irás a una clase abstracta en primer lugar.
porque cuando haces una array de algún tipo de objeto, no está tratando de crear una instancia de los objetos. Todo lo que está haciendo es una serie de ranuras para poner referencias.
new Game[10];
hace 10 ranuras para Game
referencias, pero no hace una sola Game
.
Porque no violas la abstract class
reglas. Esencialmente,
Game games = new Game();
se descompone en:
Game games; //Will Work because it's just a declaration
games=new Game(); //Will not work because it's instantiation
Si bien la creación de objetos es perfectamente válida para las clases abstractas, no se permite la inicialización.
Reseñas y calificaciones
Si para ti ha resultado de ayuda este artículo, te agradeceríamos que lo compartas con más desarrolladores de esta forma contrubuyes a difundir nuestro contenido.