Polymorphy

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Morgen,

ich hätte eine Frage zum Polymorphismus und zwar folgendes, ich habe z.B.: Katzen und Hunde -> Überklasse ist Tiere, Katzen und Hunde sind von Tiere abgeleitet, so weit so gut, wenn ich jetzt in einer Verwaltung von Tieren:

Code:
Katzen katze1 = new Katzen();
Katzen katze2 = new Katzen();
Hunde hund1 = new Hund();

List<Tiere> tiereList = new ArrayList<Tiere>();
tiereList.add(katze1);
tiereList.add(katze2);
tiereList.add(hund1);

oder

Code:
Tiere katze1 = new Katzen();
Tiere katze2 = new Katzen();
Tiere hund1 = new Hund();

List<Tiere> tiereList = new ArrayList<Tiere>();
tiereList.add(katze1);
tiereList.add(katze2);
tiereList.add(hund1);

schreibe, ist eigentlich völlig egal, es werden, wenn ich die ArrayList ausgebe, immer die richtigen Methoden aufgerufen.
Ein Variable als Tiere tiere = ... zu deklarieren macht ja nur Sinn, wenn ich dieser Variable verschiedene Tiere zuweisen möchte (Hunde oder Katzen), ansonsten ist es ja ziemlich egal,
Sehe ich das richtig so oder gibt doch einen Unterschied?
schönen Tag noch,
 

MQue

Top Contributor
Aber bei dem, was ich in die Liste (List, ArrayList) gebe, ist es völlig egal, ob ich eben Tiere tier = ..., oder Katze tier = .. schreibe,

Mit gehts darum, wie erklärt man einem Anfänger, dass man das so machen soll wenn es eigentlich egal ist, wenn man die Objektreferenzen in einer List speichert? Soll ich sagen aus Prinzip oder weil man es immer so macht, da ist halt das Problem, dass die Anfänger nichts damit anzufangen wissen,
Besten Dank,
 

The_S

Top Contributor
Wenn die Collection z. B. nur Katzen aufnehmen kann, oder nur Hunde. Oder nur ein Interface, das nicht von allen Tieren implementiert wird.
 
S

SlaterB

Gast
in die Liste werden Objekte eingefügt, dafür ist es offensichtlich egal, unter was für einer Variablen die vorher gespeichert waren,
Variablen haben keinen Einfluss auf Objekte,

ob man generell Variablen vom Typ der Klasse oder vom Interface verwenden soll,
ist in dem Topic meines Links erklärt,
ist doch ganz egal, ob es um Tiere oder Listen geht
 

Marco13

Top Contributor
Vorschlag:
Code:
List<Tiere> tiereList = new ArrayList<Tiere>();
tiereList.add(new Katzen());
tiereList.add(new Katzen());
tiereList.add(new Hund());
:D
 

The_S

Top Contributor
Was mir grad so auffällt: Klasse "Katzen" sollte "Katze" heißen. Immer plural verwenden, es sei denn du hast nen driftigen Grund dafür.

Nachtrag: Natürlich immer singular, nicht plural :oops:
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben