Vererbung und Methodenaufruf

JavaAnfänger1235

Bekanntes Mitglied
Hallo,
ich habe folgende Klassen:
Java:
public class OberPrint {
protected String text = " OberPrintText ";

protected void print() {
System. out.println ( " OberPrint.print : " + text );
}
}
public class UnterPrint  extends OberPrint{
public String text = " UnterPrintText ";

public void print() {
System.out.println ( " UnterPrint . p r i n t : " + text);
}
}

Danach jetzt das Anwendungsprogramm:

Java:
public class OUPrintTest {
  

public static void main ( String [ ] args ) {
  

UnterPint unten = new UnterPrint ( ) ;
OberPrint oben = unten ;
oben.print ( ) ;
unten.print ( ) ;
System. out . println ( " oben . t e x t = " + oben.text ) ;
System. out . println ( " unten . t e x t = " + unten.text ) ;
}
}

Ok jetzt ist die Frage welche Methode gerufen wird und welches Datenfeld text.
Dabei ist es doch so, dass der Typ des Objekts bestimmt welche Implementierung der Methode gerufen wird. Beim Datenfeld text geht es um die Referenz.

D.h doch jetzt bei diesem Beispiel, dass 2 mal die Methode print der Subklasse gerufen wird.
Es wird doch nur ein Objekt der Unterklasse erzeugt oder ?
 

Flown

Administrator
Mitarbeiter
Das hier ist ein Shadowing Problem deiner Variablen und diese werden durch statische Typauflösung gelöst. Darum erhälst du diese Ergebnisse. Methoden werden hier dynmaic dispatched.
 

MiMij

Bekanntes Mitglied
Deine Frage versteh ich nicht ganz. Du sagst doch hier
Java:
OberPrint oben = unten ;
quasi das gleiche wie eine Zeile drüber. Dann ist klar, dass er jeweils das gleiche ausgibt "UnterPrintText"
Denn "Subklassen sind automatisch immer auch eine Instanz von der Superklasse".
Wichtig ist was bei new steht, das Objekt wir dann erzeugt. Du hast also quasi 2x ein Object von UnterPrint.
Machst du ein
Java:
OberPrint ober = new OberPrint();
ober.print();
wird auch die print Methode von der OberPrint Klasse ausgegeben.

Hast du deinen Quellcode abgetippt? So ist es nämlich nicht Compilierfähig.
Du erstellst in der Main ein Objekt vom Typ "UnterPint" deine Klasse heißt aber "UnterPrint", da sollte der Compiler schon meckern.
Die Formatierung fehlt auch vollkommen, gewöhn dir das gleich am Anfang an (falls es bei dir auch so ausschaut wie hier).
 

Flown

Administrator
Mitarbeiter
Die Ausgabe lautet:
Code:
 UnterPrint . p r i n t :  UnterPrintText 
 UnterPrint . p r i n t :  UnterPrintText 
 oben . t e x t =  OberPrintText 
 unten . t e x t =  UnterPrintText
Nachdem OberPrint ja den dynamischen Typ UnterPrint hat, wird immer die Methode des aktuellen (dynamischen Typs - dynamic dispatching) aufgerufen.
Bei dem text Property ist es so, dass hier aber der statische Typ entscheidet welche gerade Sichtbar ist - da es ja in der Unterklasse verdeckt wird (gleicher Name - Shadowing).
 

JavaAnfänger1235

Bekanntes Mitglied
Ich habe es aus meinem Skript abgetippt. Sorry für die Fehler. Es ging mir nur um das Verständnis. Vor allem den Unterschied zwischen Objekttyp und Referenztyp.
Nochmal:
OberPrint oben = unten ;
Eine Zeile drüber habe ich ja ein Objekt der UnterPrint erstellt mit dem Namen unten.
Dann deklariere ich eine Variable oben vom Typ OberPrint und weise unten diesem zu.
Was ist jetzt genau die Referenz und der tatsächliche Objekttyp ?
 

Flown

Administrator
Mitarbeiter
Objekttyp und Referenztyp.
Es gibt nur Referenztypen und primitive Datentypen. Was du meinst ist statischer und dynamischer Typ.
Was ist jetzt genau die Referenz und der tatsächliche Objekttyp ?
Was deklariert ist, ist immer der statische Typ und was zugewiesen wird der dynamische:
Java:
OberPrint ober = new UnterPrint(); //statischer Typ: OberPrint, dynamischer Typ: Unterprint
 

JavaAnfänger1235

Bekanntes Mitglied
Aha ich verstehe.
In der Vorlesung stand es wie folgt:
Wie verhält sich die Methode print?
der tatsächliche Typ des Objekts (nicht der Typ der Referenz) bestimmt, welche
Implementierung der Methode gerufen wird
Welches Datenfeld text wird verwendet?
der deklarierte Typ der Referenz bestimmt, auf welche Klasse dafür zugegriffen wird
(nicht der tatsächliche Objekttyp)

Ist das so falsch?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Problem bei Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 3
J Vererbung, Methodenaufruf Java Basics - Anfänger-Themen 4
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
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
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben