Polymorphie Verständnisproblem

Status
Nicht offen für weitere Antworten.

skuuta

Mitglied
Hallo zusammen,

ich habe eine Frage bezüglich der Polymorphie in Java. Bisher war ich der Annahme, dass ich das Konzept der späten Bindung verstanden habe. Jetzt bin ich aber an eine Stelle gekommen, wo ich mir dann doch nicht so sicher bin, ob ich es verstanden habe.

Davon ausgehend das ich 3 Klassen habe.

Code:
ClassA{
	tueWas(){
	…
	}

ClassB extends ClassA{
	….
	tueWasAnderes(){
	….
	}
}

ClassC extends ClassB{
	….
}

Jetzt kann ich ja in der main() folgendes machen:
Code:
ClassA() anA = new ClassC() //  oder analog, die Referenz anA kann auf jedes Objekt              
                                                 // “zeigen“, welches in der Vererbungshierarchie weiter unten  
                                                 // liegt.

Ich dachte jetzt, dass ich zur Laufzeit die Referenz anA auf irgendein Objekt xyz zeigen lassen kann (wenn es vererbungstechnisch “unter ClassA“ liegt). Wenn ich dann anA.tueWasAnderes() aufrufe wird (wegen später Bindung) die zu dem Objekt passende Methode tueWasAnderes() aufgerufen, also entweder die Methode aus ClassB oder ClassC.

Nun steht in meinem Java Buch, dass sich der Compiler nach dem Typen der Referenz richtet, also ClassA. Nun kennt ClassA die Methode tueWasAnderes() nicht, deshalb kriege in Eclipse, wenn ich anA. (Punkt) tippe, in der Methodenauswahlliste die Methode tueWasAnderes() gar nicht angezeigt.

Ich habe gedacht verstanden zu haben, dass ich mir ne Referenz vom generalisierten Typ erstelle und damit (je nach dem welches konkrete Objekt dran hängt) jede Methode aller im Vererbungsweg tiefer liegenden Klassen ansprechen zu können.

Ich frage mich was mir die Polymorphie dann bringen soll?
Ich hoffe ich konnte meine Problemstellung verständlich darstellen und das ihr mir helfen könnt.

Vorab danke und einen schönen Gruß
Mario
 
S

SlaterB

Gast
Object o = xy;

was o an dieser Stelle ist, weiß die Entwicklungsumgebung nicht,
sollte sie jetzt alle Methoden von allen bekannten Klassen auflisten?

außerdem ist das aus Typsicherheits-Sicht Unsinn,
du schreibst
anA.tueWasAnderes()
und später ist in anA gar nicht ClassB drin sondern ClassA,
was nun?

alles falsch,
an einem ClassA-Objekt kann man selbstverständlich nur ClassA-Methoden aufrufen,
allerdings wird die Methode der Subklasse ausgeführt, falls es ein Objekt einer Subklasse ist und diese die Methode überschreibt,

genau so ist es der Sinn von Polymorphie,

Vorteil?
du hast ein abstractes Interface wie List, mit einer Methode add(x)
und kannst diese ganz allgemein aufrufen,

unabhängig davon ob die konkrete Klasse nun ArrayList ist und x in ein Array schreibt
oder eine LinkedList ist und x auf andere Weise einfügt
 

xdavidx

Aktives Mitglied
Das was du vor hast ist ein sog. Down Cast was keine gute Idee ist, da es nur zur Laufzeit überprüfbar ist.
 

Der Müde Joe

Top Contributor
Ein Beispiel der Polymorphie:
Code:
public class Car {
	
	public int velocity() {
		return 10;
	}

	public static class Ferrari extends Car{
		@Override
		public int velocity() {
			return 200;
		}
	}
	
	public static class Trabant extends Car{
		@Override
		public int velocity() {
			return 2;
		}
	}
	
	public static class EnzoFerrari extends Ferrari{
		@Override
		public int velocity() {
			return 350;
		}
		
		public String getName() {
			return "I am the Enzo";
		}
	}
	
	public static void main(String[] args){
		Car car = new Car();
		System.out.println(car.velocity()); //10
		car = new Trabant();
		System.out.println(car.velocity()); //2
//		System.out.println(car.getName()); //compiler error: car has no getName()
		car = new Ferrari();
		System.out.println(car.velocity()); //200
//		System.out.println(car.getName()); //compiler error: car has no getName()
		car = new EnzoFerrari();
		System.out.println(car.velocity()); //350
//		System.out.println(car.getName()); //compiler error: car has no getName()
		EnzoFerrari enzo = (EnzoFerrari)car;
		//now it is an enzo with getName Method
		System.out.println(enzo.getName());
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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 - Polymorphie Java Basics - Anfänger-Themen 37
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
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
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
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
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
M Vererbung Enum Vererbung/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
S Polymorphie und Vererbung Java Basics - Anfänger-Themen 6
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
T Vererbung und Polymorphie Java Basics - Anfänger-Themen 7
C Unterschied zwischen Polymorphie und Typcasting Java Basics - Anfänger-Themen 10
Z Vererbung oder Polymorphie? Java Basics - Anfänger-Themen 5
J Polymorphie Java Basics - Anfänger-Themen 6
G Polymorphie und Interface Java Basics - Anfänger-Themen 2
S Polymorphie und Vererbung Java Basics - Anfänger-Themen 25
S Polymorphie - oder auch spanisches Dorf? Java Basics - Anfänger-Themen 5
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
T Verständnisproblem mit Assoziationen Java Basics - Anfänger-Themen 7
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
A Erste Schritte Verständnisproblem Java Basics - Anfänger-Themen 5
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
2 Verständnisproblem bei Anwendung von Lower Bounded Wildcards Java Basics - Anfänger-Themen 5
V Verständnisproblem Java Basics - Anfänger-Themen 22
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
J Verständnisproblem einer Methode Java Basics - Anfänger-Themen 20
M Konstruktur - Verständnisproblem Java Basics - Anfänger-Themen 4
C Postinkrement und println - Verständnisproblem Java Basics - Anfänger-Themen 8
T Verständnisproblem beim Vigenere-Verfahren Java Basics - Anfänger-Themen 2
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2
D Verständnisproblem Java Basics - Anfänger-Themen 2
B VerständnisProblem mit Beispielaufgabe aus Buch Java Basics - Anfänger-Themen 1
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
V Verständnisproblem Java Basics - Anfänger-Themen 5
V Arrays-verständnisproblem Java Basics - Anfänger-Themen 4
M Collections HashSet verständnisproblem Java Basics - Anfänger-Themen 9
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
P Verständnisproblem main Methode Java Basics - Anfänger-Themen 9
S Klassen Verständnisproblem Konstruktor Java Basics - Anfänger-Themen 7
I e.getMessage(); - Verständnisproblem Java Basics - Anfänger-Themen 6
lesni Vererbung Vererbung - Verständnisproblem Java Basics - Anfänger-Themen 2
J Verständnisproblem Methoden-Kettung Java Basics - Anfänger-Themen 3
A Vererbung Verständnisproblem bei Übung Java Basics - Anfänger-Themen 5
E Verständnisproblem Typkonvertierung Java Basics - Anfänger-Themen 4
S OOP Verständnisproblem Umsteiger Java Basics - Anfänger-Themen 22
C Array Verständnisproblem Java Basics - Anfänger-Themen 3
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
D : ? Operator -Verständnisproblem Java Basics - Anfänger-Themen 24
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
L Eclipse verlangt "{" nach ";"... Verständnisproblem Java Basics - Anfänger-Themen 5
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
D Verständnisproblem Marken und Schleifen Java Basics - Anfänger-Themen 19
M Verständnisproblem bei Ternären Operanten bzw. Bedingungsoperator Java Basics - Anfänger-Themen 8
T Datentypen Verständnisproblem mit main Methode Java Basics - Anfänger-Themen 3
M Verständnisproblem Threads Java Basics - Anfänger-Themen 7
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
B Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8
A Postinkrement-Verständnisproblem Java Basics - Anfänger-Themen 12
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben