Polymorphie und Vererbung

stephanie

Aktives Mitglied
Hallo Leute,

ich habe viele über Vererbung und Polymorphismus gelesen. Ich habe aber nicht verstanden, woran liegen die Unterschiede zwischen beiden? Es sieht mir so aus, beide sind einfach vererbung.

Danke im voraus für die Erklärungen.
 

muemmel_0811

Bekanntes Mitglied
Stell Dir vor, Du hast eine Superklasse Tier. Diese vererbt ihre Instanzvariablen (bspw. größe und gewicht) und Methoden (gibLaut()) an die Klassen Hund und Katze. Hund und Katze erben also von Tier.
Java:
public class Tier() {
int gewicht, größe;
public void gibtLaut() {
// irgendein Code, der Geräusche erzeugt
}
}
public class Hund extends Tier {
int gewicht, größe;
public void gibtLaut() {
// irgendein Code, der hundespezifische Geräusche erzeugt
}
}
public class Katze extends Tier {
int gewicht, größe;
public void gibtLaut() {
// irgendein Code, der katzenpezifische Geräusche erzeugt
}
}
Nun hast Du noch eine Klasse Tierfuetterung mit der Methode gibFutter(Tier t). Und an diese Methode kannst Du nun entweder einen Hund oder eine Katze übergeben, weil ja beide von der Klasse Tier geerbt haben (bzw. diese Klasse Tier erweitert haben), also so:
Java:
class Tierfuetterung {
public void gibFutter(Tier t) {
System.out.print("Fütter das Tier: " + t);
}
class Zoo {
public static void main(String[] args) {
Tierfuetterung t = new Tierfuetterung();
Hund h = new Hund();
Katze k = new Katze();
t.gibFutter(h);
t.gibFutter(k);
}
Und das ist Polymorphie.

Grüße,
muemmel_0811
 
Zuletzt bearbeitet:

stephanie

Aktives Mitglied
Also, kann ich mal so denken: mindestens bei der Poly. gibt es kein "extends" und es muss auch nicht vorhanden. Bei der Poly. kann eine Klasse von irgendeinen Klasse eine Methode überschreiben.
richtig??
 
G

gman

Gast
Hmm, ich glaube du verrennst dich da ein bischen. Es gibt nicht Vererbung und/oder Polymorphie (als Konstrukt von Java),
sondern Polymorphie wird erst durch Vererbung ermöglicht. Genauer: Vererbung ("extends") ist eine Eigenschaft der
Programmiersprache Java, und damit lässt sich Polymorphie erreichen.

Lies dir den Link von Final_Striker ruhig noch ein paarmal durch.
 

kossy

Bekanntes Mitglied
Hmm, ich glaube du verrennst dich da ein bischen. Es gibt nicht Vererbung und/oder Polymorphie (als Konstrukt von Java),
sondern Polymorphie wird erst durch Vererbung ermöglicht. Genauer: Vererbung ("extends") ist eine Eigenschaft der
Programmiersprache Java, und damit lässt sich Polymorphie erreichen.

Wobei sich die Polymorphie aber auch durch Interfaces erreichen lässt, man braucht nicht zwingend Subklassen bzw. "extend". Mir fallen als Praxisbeispiele spontan das State-Pattern oder Strategy-Pattern ein. Also es geht sowohl mittels Vererbung, als auch mithilfe von Interfaces.
 

muemmel_0811

Bekanntes Mitglied
Also, kann ich mal so denken: mindestens bei der Poly. gibt es kein "extends" und es muss auch nicht vorhanden. Bei der Poly. kann eine Klasse von irgendeinen Klasse eine Methode überschreiben. richtig??
Nein. Die Code-Brocken, die ich auf zweimal aufgeteilt habe, gehören zusammen:
Java:
public class Tier() {
int gewicht, größe;
public void gibtLaut() {
// irgendein Code, der Geräusche erzeugt
}
}
public class Hund extends Tier {
int gewicht, größe;
public void gibtLaut() {
// irgendein Code, der hundespezifische Geräusche erzeugt
}
}
public class Katze extends Tier {
int gewicht, größe;
public void gibtLaut() {
// irgendein Code, der katzenpezifische Geräusche erzeugt
}
}
class Tierfuetterung {
public void gibFutter(Tier t) {
System.out.println("Fütter das Tier: " + t.getClass());
}
class Zoo {
public static void main(String[] args) {
Tierfuetterung t = new Tierfuetterung();
Hund h = new Hund();
Katze k = new Katze();
t.gibFutter(h);
t.gibFutter(k);
}
Meine beiden Vorredner haben es bereits gesagt: es gibt nicht entweder oder, sondern beides zusammen. Für den Anfang solltest Du Dir vielleicht merken, dass ohne Vererbung keine Polymorphie möglich ist (@kessy: uns Anfänger verwirrt man mit solchen Aussagen mehr, als dass es nützt :oops:). Polymorphie funktioniert dann, wenn zwei Objekte miteinander verwandt sind und das funktioniert eben über die Vererbung von Ober- zur Unterklasse. Und um bei meinem Beispiel zu bleiben: Tier ist die Oberklasse und Hund oder Katze sind Unterklassen von Tier.

Versuch doch mal die 5 Klassen zu erstellen und schau Dir an was passiert. Vielleicht lichtet sich der Nebel dann ja etwas. Ach ja, evtl. sind ein paar } verloren gegangen...

Grüße
muemmel_0811
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
H Polymorphie Verständnisproblem Vererbung/Polymorphie Java Basics - Anfänger-Themen 4
M OOP Polymorphie/Vererbung Verständnisproblem Java Basics - Anfänger-Themen 2
M Vererbung Enum Vererbung/Polymorphie Java Basics - Anfänger-Themen 2
T Vererbung und Polymorphie Java Basics - Anfänger-Themen 7
Z Vererbung oder Polymorphie? Java Basics - Anfänger-Themen 5
S Polymorphie und Vererbung Java Basics - Anfänger-Themen 25
T Beispiel Polymorphie, Tier hund = new Hund(); Java Basics - Anfänger-Themen 3
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
T Polymorphie und LSP Java Basics - Anfänger-Themen 4
KogoroMori21 Polymorphie-Verständnis Java Basics - Anfänger-Themen 5
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
NeoLexx Zuweisungskompatibilität zwischen Vererbungsbeziehungen (Polymorphie) Java Basics - Anfänger-Themen 18
A Polymorphie Java Basics - Anfänger-Themen 4
O Polymorphie Java Basics - Anfänger-Themen 3
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
K Polymorphie Java Basics - Anfänger-Themen 6
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
C Kurze Frage zur Polymorphie Java Basics - Anfänger-Themen 1
J Polymorphie - Beispielcode Java Basics - Anfänger-Themen 7
T Polymorphie Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
C Polymorphie Java Basics - Anfänger-Themen 1
L Polymorphie Polymorphie verstehen? Java Basics - Anfänger-Themen 2
N Methoden Polymorphie Java Basics - Anfänger-Themen 11
E Polymorphie Beispiel Polymorphie Java Basics - Anfänger-Themen 2
K Polymorphie und instanceOf Operator Java Basics - Anfänger-Themen 6
S Vererbung Objekte in verwandten Klassen (Kovarianz, Polymorphie) Java Basics - Anfänger-Themen 4
R Polymorphie Java Basics - Anfänger-Themen 2
P Polymorphie Java Basics - Anfänger-Themen 6
xehpuk Polymorphie Polymorphie in Parametern Java Basics - Anfänger-Themen 5
H Kleines Problem mit der Polymorphie Java Basics - Anfänger-Themen 2
A OOP Polymorphie Java Basics - Anfänger-Themen 6
2 Interfaces, Polymorphie und Methoden. Java Basics - Anfänger-Themen 14
C OOP Frage zu Polymorphie Java Basics - Anfänger-Themen 4
P Eine Frage begzl. Interface / Polymorphie Java Basics - Anfänger-Themen 11
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
F Verständnisfrage Objekt instanzierung / Polymorphie Java Basics - Anfänger-Themen 10
T Polymorphie:Überschreiben der Methode klappt nicht Java Basics - Anfänger-Themen 4
C Unterschied zwischen Polymorphie und Typcasting Java Basics - Anfänger-Themen 10
S Polymorphie Verständnisproblem Java Basics - Anfänger-Themen 4
J Polymorphie Java Basics - Anfänger-Themen 6
G Polymorphie und Interface Java Basics - Anfänger-Themen 2
S Polymorphie - oder auch spanisches Dorf? Java Basics - Anfänger-Themen 5
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben