Methode von Basisklasse aufrufen

Status
Nicht offen für weitere Antworten.
0

00x

Gast
Code:
	class Foo{
		void doo() {
			System.out.println("foodoo");
		}
	}
	class Bar extends Foo {
		void doo() {
			System.out.println("bardoo");
		}		
	}
	
	class Clazz extends Bar {
		void doo() {
			System.out.println("clazzdoo");
			super.doo(); // wie foo.doo() aufrufen? 
			
		}				
	}
Wie kann man methoden von Klassen aufrufen, die nicht direkt super sind, aber trotzdem in der Vererbungshierarchie sind?
 
0

00x

Gast
Was ja nicht viel bringt, wenn ich Bar.doo überschreiben will und dann noch Foo.doo aufrufen will.
 

ARadauer

Top Contributor
allgemein bringt es nix wenn du Bar.doo überschreibst und Foo.doo aufrufen willst. das ist nicht sinn der sache.
warum überschreibst du sie dann? nenn die methode halt anders...

kann auch nicht sagen, ich will + nehmen es soll aber subtrahiert werden...
 
0

00x

Gast
Es kommt allgemein öfters vor, dass man super Methoden aufruft, wenn man diese überschreibt z.B. super.paint bei Containern. Wenn ich genau diese überschreiben will, kann ich sie nicht anders nennen. Wenn ich jetzt ein Bar hab das sich sehr änhlich wie Clazz verhält, aber sich ein bisschen anders zeichnet, dann will ich nicht Bar.paint, sondern Container.paint aufrufen. Ich könnte jetzt irgendwelche umleitfunktionen einbauen oder abstrakte Klasse dazwischen bauen, aber das find ich relativ umständlich. In C++ würde ich einfach Container::paint aufrufen.
 

ps

Bekanntes Mitglied
Das geht? Wundert mich doch sehr.

Das Problem ist doch das du in "Bar" die Methode bereits überschrieben hast. Wenn du jetzt eine Klasse von Bar ableitest, kann die ursprüngliche Methode in Foo nicht mehr da sein. Das wäre ja absolut unlogisch :)

Du sagst ja:
Bar ist eine Foo.
Nur eine Kleinigkeit ist anders, nämlich doo().
Dann sagst du Clazz ist eine Bar.

Und jetzt willst du in Clazz, welche eine Bar ist auf eine der Methoden zugreifen welche eine Bar von einem Foo unterscheidet. Das macht keinen Sinn.

Deine Objektlogik stimmt nicht.. ich würde da nochmal ein bisschen Hirnschmalz reinstecken.
 
0

00x

Gast
Natürlich geht das. Wenn ich eine Methode überschreibe ist die Methode der Basisklasse doch nicht weg, sonst könnte man ja garkeine super Methode aufrufen.

Wenn Bar ein spezieller Container ist und Clazz ein spezielles Bar, dann ist Clazz natürlich auch ein Container.
 
S

SlaterB

Gast
denkbar ist theoretisch alles,
es bleibt aber festzuhalten, dass es in Java nicht geht, und zwar nicht nur durch irgendwelche super-Aufrufe nicht sondern generell unmöglich ist, auch durch Reflection nicht oder was man sich sonst ausdenken könnte,

und dass es in Java extra so gedacht ist und bisher nirgendwo zu Problemen geführt hat, außer dass man gezwungen ist, sauber zu programmieren


man führt auch keine Mehrfachvererbung ein, nur weil irgendwo mal eine Konstellation von vorgegebenen Klassen existiert,
die einen anderen Weg außer komplizierten Neubau verhindert
 
G

Gast2

Gast
Moin,

00x hat gesagt.:
Natürlich geht das

nein geht nicht ... Du versuchst von Bar über Super eine Methode von Foo aufzurufen ... aber Super ist in dem Fall Bar und NICHT Foo ... wenn Du von Bar Foo aufrufen willst, dann musst Du eine Referenz von Foo nach Bar durchreichen

das was Du willst funktioniert mit keiner OOP-Sprache

hand, mogel

PS: nein - Reflection hat nichts mit OOP zu tun
 
0

00x

Gast
mogel hat gesagt.:
00x hat gesagt.:
Natürlich geht das

nein geht nicht ... Du versuchst von Bar über Super eine Methode von Foo aufzurufen ... aber Super ist in dem Fall Bar und NICHT Foo ... wenn Du von Bar Foo aufrufen willst, dann musst Du eine Referenz von Foo nach Bar durchreichen

das was Du willst funktioniert mit keiner OOP-Sprache
Nur weil die Java Syntax auf super beschränkt ist geht das in Java nicht.
In C++ ruf ich einfach von Clazz aus
Bar::doo()
oder
Foo::doo()
auf, das geht ohne Probleme und macht genau das was ich will. Oder ist C++ jetzt keine OOP Sprache mehr?
 
G

Gast2

Gast
Moin,

00x hat gesagt.:
Nur weil die Java Syntax auf super beschränkt ist geht das in Java nicht.

ach Mist ... ich erkenne gerade das Du keinen Baum an Vererbung hast, sondern eine Sequenz ... das sollte natürlich in jeder OOP-Sprache funktionieren ... versuch mal Dein Glück mit
Code:
super.super.doo();

Nachtrag:
es gibt unter Java keinen direkten Zugriff wie unter C++, da Java keine Multivererbung unterstützt

hand, mogel
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Reflection - Wie rufe ich die Felder einer Klasse in einer Methode der Basisklasse? Allgemeine Java-Themen 4
P Methode der Basisklasse Allgemeine Java-Themen 7
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
R @author vor Methode (eclipse) Allgemeine Java-Themen 1
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
Y Java Bruttoberechnen + runden Methode Allgemeine Java-Themen 1
R Warum ist die Methode unendlich oft rekursiv? Allgemeine Java-Themen 5
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
S static methode im Interface Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Sinn einer toString Methode Allgemeine Java-Themen 3
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L ToString-Methode Allgemeine Java-Themen 6
X Datentypen NPE in längerer Methode Allgemeine Java-Themen 12
I Methoden Generics-Methode Allgemeine Java-Themen 3
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
F Variablen Palindromzahl (Probleme mit Methode) Allgemeine Java-Themen 9
B APi methode kurz anhalten Allgemeine Java-Themen 8
P Methode aus anderem Paket aufrufen Allgemeine Java-Themen 1
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
R Rekursive Methode Allgemeine Java-Themen 8
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
C Threads Methode verhält sich merkwürdig Allgemeine Java-Themen 18
R rekursive und iterative Methode Allgemeine Java-Themen 3
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
D Methoden Methode zum Steinschnitt Allgemeine Java-Themen 2
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
D Returnwert aus einer Methode gerundet ausgeben lassen Allgemeine Java-Themen 2
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3
snipesss Methode greift nicht auf JTextPanel zu Allgemeine Java-Themen 3
R Methode in Methode voraussetzen Allgemeine Java-Themen 8
S Überschriebene Methode der Oberklasse der Oberklasse aufrufen. Allgemeine Java-Themen 5
D Methode dynamisch aufrufen Allgemeine Java-Themen 2
Sogomn Methode als Parameter? Allgemeine Java-Themen 3
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
BRoll Methode abbrechen (Invoke von außen) Allgemeine Java-Themen 5
I Methode verallgemeinern (Methode als Parameter)? Allgemeine Java-Themen 10
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
G Threads Methode nebenbei ausführen, Status verarbeiten Allgemeine Java-Themen 4
H FTP Befehl/Java Methode für Submit im z/Os (Host) Allgemeine Java-Themen 1
M Fabrik Methode, gutes Beispiel? Allgemeine Java-Themen 0
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
N WaitForScript- methode in javafx Allgemeine Java-Themen 1
2 jede Stunde Methode ausführen Allgemeine Java-Themen 8
M Eine static-Methode verlassen Allgemeine Java-Themen 2
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
X Komponente an Methode übergeben Allgemeine Java-Themen 1
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
S Getestete Methode um das Beste aus URL-Nutzereingaben rauszuholen..? Allgemeine Java-Themen 4
L Methoden Methode gibt mir beim verschlüsseln mit RSA 0 bytes aus ? Allgemeine Java-Themen 1
D Methode mit optionalen Parametern in Interface Allgemeine Java-Themen 3
C DBConnection als Methode in mehreren Klassen Allgemeine Java-Themen 4
S Methode funktioniert nicht als ActionListener Allgemeine Java-Themen 4
M Methoden Methode Auslagern Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben