Instanziierung bedeutet das Erstellen einer Instanz einer Klasse. Im obigen Szenario haben Sie gerade eine gamesArray
vom Typ Game
mit der Größe 10
deklariert (nur die Referenzen und nichts anderes). Deshalb wirft es keinen Fehler.
Sie erhalten den Fehler, wenn Sie versuchen,
zu tun %Vor%aber ein Array der abstrakten Klasse erstellen?
Später können Sie so etwas tun
%Vor%Dies ist sehr erlaubt und deshalb werden Sie für eine abstrakte Klasse an erster Stelle gehen.
Wenn Sie ein Array mit einem Objekttyp erstellen, versuchen Sie nicht, die Objekte zu instanziieren. Alles, was Sie machen, ist eine Anzahl von Slots, in die Referenzen eingefügt werden können.
new Game[10];
erstellt 10 Slots für Game
Referenzen, aber es wird kein einziges Game
erstellt.
Weil Sie die abstract class
-Regeln nicht verletzen. Im Wesentlichen
ist unterteilt in:
%Vor%Während das Erstellen von Objekten für abstrakte Klassen absolut gültig ist, ist das Initialisieren nicht erlaubt.
- Eine Klasse Abstract
ist eine Klasse, deren Instanz NICHT erstellt werden kann .
- Das Erstellen eines Arrays, das die Objektreferenzvariable dieser abstrakten Klasse enthält, sind nur die Referenzen nicht das Objekt selbst .
- Eine Abstract
-Klasse sowie ein Interface
in Java werden für die Implementierung von Verhaltensweisen verwendet, die sich ständig ändern. Betrachte die Abstract class like laying down some protocols for its concrete classes.
Beispiel:
%Vor%Abstrakte Klassen können nicht instanziiert werden, sie können erweitert werden. Arrays sind eigentlich Objekte, sag einfach zu deiner JVM: Hey Kumpel, mach Platz für 10 Game-Objekte. Das ist alles, Sie instantiieren keine Game-Objekte.
Spiel Spiele = neues Spiel (); Dies erzeugt eine Instanz des abstrakten Klassenspiels, die nicht erlaubt ist.
Erstellen Array mit folgenden Spiel [] SpieleArray = neues Spiel [10];
ist genau wie ein deklarierendes Spielobjekt, hier erstellt es keine Instanz. wie Spiel Spiel;
Entweder deklariert man 10 Objekt der Game-Klasse oder crating Array of Game sind beide gleich, nur die Zuweisung von Speicher wird anders sein.
Danke
Tej Kiran
Abstrakte Klasse, wie der Name besagt, kann nicht instanziiert werden. Wenn Sie Game[] gamesArray = new Game[10];
erstellt haben, wird ein array
erstellt, das Game references
enthalten kann. Versuchen wir es mit einem realen Szenario zu verbinden.
Angenommen, Sie haben eine abstrakte Klasse Animal
. Sie können es nicht instanziieren, da Tier keine konkrete Klasse ist, daher würde Animal obj = new Animal()
fehlschlagen. Aber Animal[] animalArray = new Animal[10]
würde ein Array erstellen, das Referenzen auf 10 Tierobjekte wie Hund, Katze, Pferd usw. enthalten kann.
Abstrakte Klassen haben keine vollständig ausgearbeiteten Methoden. Sie werden als Basisklassen verwendet, die durch andere Klassen erweitert werden, die sie "erben".
Zum Beispiel können Sie eine abstrakte Klasse namens Pet haben.
%Vor%Dies kann um vererbte Klassen erweitert werden:
%Vor%Von dort können Sie Dinge in Ihrem Code haben wie:
%Vor%Und Sie können Arrays von Pets erstellen, die sowohl Katzen als auch Hunde als akzeptable Elemente aufnehmen.
%Vor%Für weitere Informationen empfehle ich Ihnen, den Java-Tutorial-Abschnitt über abstrakte Klassen hier zu lesen .
Tags und Links java arrays abstract-class