Vererbung Objekterzeugung

Zet

Aktives Mitglied
Guten Morgen zusammen,

eine wahrscheinlich ganz simple Frage, aber mir fehlen die Begriffe um Internet danach zu forsten.

Oberklasse: Person
Unterklasse von Person: Student

Java:
Person oPerson = new Person("xx", "XX", 14, 180);
Person oStudent = new Student("yy", "YY", 23, 147);
Student oStudent = new Student("zz", "ZZ", 46, 145);




Mir ist klar, dass oStudent die Methoden von Person und Student verwendet.
Frage: Aber was ist der unterschied wenn ich als Datentyp die Oberklasse (Person) oder die Zielklasse(Student) übergebe:
Java:
[B][U]Person[/U][/B] oStudent = new Student("yy", "YY", 23, 147);
[B][U]Student[/U][/B] oStudent = new Student("zz", "ZZ", 46, 145);



Ist das ähnlich zur List, wo man gegen das Interface arbeitet, um später die implementierte List möglicherweise gegen eine andere auszutauschen?

Vielen Dank schonmal :)
Zet
 

BRoll

Bekanntes Mitglied
So ähnlich, bei Vererbung nennt sichs Polymorphie.
Der Unterschied ist:
Student student=new Student(); student wird immer ein Student sein, ich kann keine andere Person draus machen
Person student=new Stident(); student ist zwar als student konstruiert, ist aber beim early binding als person hinterlegt.
dh. eine zeile später kann ich dann: student=new Dozent(), wenn dozent < person.
Ganz wichtig ist das, um verschiedene Objekte in eine Liste zu packen.
Du könntest jetzt eine List<Person> haben, und dort können dann Studenten und Dozenten drin sein. Dir ist es in dem Moment egal, erst bei der Verarbeitung könntest du dann genauer darauf eingehen:
if( person instanceof Student)
{
Student student=(Student)person;
//student ist jezt wieder ein Student im early bindung und wir können auf die student funktionen direkt zugreifen
}

Ich hoffe das war verständlich ;)
 

Zet

Aktives Mitglied
ahhh..... Da stand ich mal wieder auf dem Schlauch. - Logisch!

Danke Broll, mehr als Verständlich ;)

manchmal wünscht man sich man könnte Themen "unsichtbar" machen.. hehe
 

Zet

Aktives Mitglied
Jetzt steh ich doch nochmal auf dem Schlauch.
Angenommen wir haben die Klassen
Lebewesen
Person
Student

nun möchte ich sicherstellen das alle Klassen die von Lebewesen erben, die toString() Methode überschreiben.
Also habe ich die Klasse Lebewesen abstrakt gemacht und die Methode
Java:
@Override
public abstract String toString();
deklariert.

Die Klasse Person erbt von Lebewesen und muss deshalb die Methode selbst implementieren und überschreiben.
Die Klasse Student erbt von Person, muss aber die Methode toString natürlich nicht selbst implementieren/überschreiben. Das ist aber genau was ich möchte, alle Klassen die z.B. von Lebewesen irgendwie abgeleitet sind sollen die dort deklarierte Methode überschreiben.

Also dachte ich, gut - machst ein Interface und bindest es ein. Ändert aber natürlich auch nichts an der Tatsache das Student immernoch nicht toString() überschreiben muss.

Wie krieg ich es hin, dass alle erbenden Klassen einer Oberklasse dessen Methoden überschreiben muss.

OOP, heute bist du nicht mit mir.
 

BRoll

Bekanntes Mitglied
Wenn Student die Methode implementieren muss, dann muss Person auch abstrakt sein.
Wenn Person nicht abstrakt ist, muss es die abstrakten methoden von lebewesen selber implementieren.
Wenn Person abstrakt wird, schiebst du das nach "unten" weiter.
Andere möglichkeit ist, wenn person nicht abstrakt sein darf, (was hier aber unlogisch wäre), dass student die methode von person
einfach überschreibt. Daher mach Person abstrakt genauso wie Lebewesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
N This bei objekterzeugung Java Basics - Anfänger-Themen 6
J Wert bei Objekterzeugung verändern Java Basics - Anfänger-Themen 12
S "Sichtbarkeitsmodifizierer" und Objekterzeugung Java Basics - Anfänger-Themen 1
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
H MyID3 Problem bei Objekterzeugung Java Basics - Anfänger-Themen 4
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
L Objekterzeugung Java Basics - Anfänger-Themen 3
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
D Verschachtelte Objekterzeugung Java Basics - Anfänger-Themen 6
E Objekterzeugung in JAVA Java Basics - Anfänger-Themen 7
F OOP Objekterzeugung in IF-Struktur Java Basics - Anfänger-Themen 2
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
N Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 5
G objekterzeugung Java Basics - Anfänger-Themen 7
S Methode für Objekterzeugung Java Basics - Anfänger-Themen 8
G objekterzeugung...absoluter anfänger :) Java Basics - Anfänger-Themen 27
S problem bei objekterzeugung Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben