Array der abstrakten Klasse

8

Warum kann ich eine abstrakte Klasse nicht instantiieren, sondern ein Array der abstrakten Klasse erstellen?

%Vor%     
Nitin 11.10.2013, 05:09
quelle

8 Antworten

11
%Vor%

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.

    
SudoRahul 11.10.2013, 05:12
quelle
2

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.

    
Dawood ibn Kareem 11.10.2013 05:11
quelle
2

Weil Sie die abstract class -Regeln nicht verletzen. Im Wesentlichen

%Vor%

ist unterteilt in:

%Vor%

Während das Erstellen von Objekten für abstrakte Klassen absolut gültig ist, ist das Initialisieren nicht erlaubt.

    
user2339071 11.10.2013 05:14
quelle
2

- 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%     
Kumar Vivek Mitra 11.10.2013 05:20
quelle
1

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.

    
Silviu Burcea 11.10.2013 05:12
quelle
1

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

    
Tej Kiran 11.10.2013 05:14
quelle
1

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.

    
Prateek 11.10.2013 05:17
quelle
0

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 .

    
MSalmo 11.10.2013 05:28
quelle

Tags und Links