Was sind Super- und Subklassen?
Generalisierende, allgemeinere Klasse heißt Superklasse
- enthält alle gemeinsamen Attribute
untergeordnete Klasse heißt Subklasse
- enthält nur individuelle Attribute und Methoden
Pfeil kann als "ist-ein"-Beziehung gelesen werden
- enthält alle gemeinsamen Attribute
untergeordnete Klasse heißt Subklasse
- enthält nur individuelle Attribute und Methoden
Pfeil kann als "ist-ein"-Beziehung gelesen werden
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Wozu nutzen wir Generalisierungen?
Bilden gemeinsamer Schnittstellen
Effizienz
Gemeinsame Attribute und Methoden nicht mehrfach implementiert
hierarchische Struktur sorgt für mehr Übersicht
Lesbarkeit
trotz Auslagerung von Codeteilen in Superlassen ist Verteilung durch klare Beziehungen nachvollziehbar
Struktur erweiterbar:
neue Klassen können einfach eingegliedert werden
Effizienz
Gemeinsame Attribute und Methoden nicht mehrfach implementiert
hierarchische Struktur sorgt für mehr Übersicht
Lesbarkeit
trotz Auslagerung von Codeteilen in Superlassen ist Verteilung durch klare Beziehungen nachvollziehbar
Struktur erweiterbar:
neue Klassen können einfach eingegliedert werden
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was ist Vererbung und welche Arten gibt es?
Weitergabe von Daten, Verhalten und Benutzbarkeit einer Superklasse an Subklasse
in OOP zwei Arten von Vererbung
°Implementierungsvererbung (-> Daten und Verhalten)
°Schnittstellenvererbung (-> Benutzbarkeit)
in Java zwei Arten von Vererbung
- Schlüsselwort extends => alles wird vererbt
° Daten
° Verhalten
° Benutzbarkeit
- Schlüsselwort implements
=> lediglich Schnittstellenvererbung
in OOP zwei Arten von Vererbung
°Implementierungsvererbung (-> Daten und Verhalten)
°Schnittstellenvererbung (-> Benutzbarkeit)
in Java zwei Arten von Vererbung
- Schlüsselwort extends => alles wird vererbt
° Daten
° Verhalten
° Benutzbarkeit
- Schlüsselwort implements
=> lediglich Schnittstellenvererbung
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Wie funktioniert die Vererbung mit "extends"?
Subklasse erbt konkrete Implementierung der Superklasse
bindet Klassen dicht aneinander
- Änderung der Superklasse wirkt sich auf alle Subklassen aus
- Erweiterung der Superklasse muss für alle Subklassen auch gültig sein
Jede Klasse hat maximal eine Superklasse (Einfachvererbung), kann aber beliebig viele Subklassen haben
Syntax
Neu deklarierte Klasse erweitert durch Schlüsselwort extends andere Klassen und erbt von ihr
vererbte Eigenschafte müssen nicht neu deklariert werden
Beispiel
public class Banane extends Obst{
//...
}
bindet Klassen dicht aneinander
- Änderung der Superklasse wirkt sich auf alle Subklassen aus
- Erweiterung der Superklasse muss für alle Subklassen auch gültig sein
Jede Klasse hat maximal eine Superklasse (Einfachvererbung), kann aber beliebig viele Subklassen haben
Syntax
Neu deklarierte Klasse erweitert durch Schlüsselwort extends andere Klassen und erbt von ihr
vererbte Eigenschafte müssen nicht neu deklariert werden
Beispiel
public class Banane extends Obst{
//...
}
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was wird mit extends vererbt? Gibt die verschiedenen Sichtbarkeiten an!
Subklasse hat Zugriff auf alle öffentlichen und geschützten Member
Private und package-private (default) sind nicht aufgreifbar
Private und package-private (default) sind nicht aufgreifbar
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was ist die Klasse "Object" ?
der "big Daddy "
implizite Basisklasse aller Klassen in Java
ohne extends-Anweisung*+ hinter Klassenname erbt Klasse automatisch von Object
alle Klassen ** haben - direkt oder indirekt - Object als Basisklasse
- erben Reihe von Methoden, u.a toString()
Beispiel
public class Lebensmittel {
// Klasse erbt von Object, da keine explizite extends-Anweisung
}
implizite Basisklasse aller Klassen in Java
ohne extends-Anweisung*+ hinter Klassenname erbt Klasse automatisch von Object
alle Klassen ** haben - direkt oder indirekt - Object als Basisklasse
- erben Reihe von Methoden, u.a toString()
Beispiel
public class Lebensmittel {
// Klasse erbt von Object, da keine explizite extends-Anweisung
}
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was sind Superkonstruktoren ?
Bei Objekterzeugung zunächst von oben nach unten ausgeführt
- notwendig, um alle Eigenschaften (auch die geerbten) zu initialisieren
Auch parametrisierte Konstruktoren rufen Standard-Konstruktor der Superklasse auf.
Wenn Superklasse keinen Standard-Konstruktor hat, muss expliziter Aufruf erfolgen
public class Obst {
....
public Obst(Color farbe, boolean istReif) {
...
}
}
public class Apfel extends Obst {
//...
public Apfel(boolean hatWurm) {
super(Color.green, true);
}
}
- notwendig, um alle Eigenschaften (auch die geerbten) zu initialisieren
Auch parametrisierte Konstruktoren rufen Standard-Konstruktor der Superklasse auf.
Wenn Superklasse keinen Standard-Konstruktor hat, muss expliziter Aufruf erfolgen
public class Obst {
....
public Obst(Color farbe, boolean istReif) {
...
}
}
public class Apfel extends Obst {
//...
public Apfel(boolean hatWurm) {
super(Color.green, true);
}
}
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was sind Finale Klassen ?
Um Vererbung zu verhindern hat Java Schlüsselwort final
Manche Klassen sollten vor Vererbung geschützt werden
Syntax:
public final class SecuritySystem{
}
Manche Klassen sollten vor Vererbung geschützt werden
Syntax:
public final class SecuritySystem{
}
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was sind die Vorteile der Implementierungsvererbung?
Gemeinsame Eigenschaften müssen nur einmal modelliert werden
-> Wiederverwendbarkeirt
erleichert Fehlersuche und -korrektur - > kann zentral durchgeführt werden
reduziert Programmieraufwand und Coderedundanz
-> Wiederverwendbarkeirt
erleichert Fehlersuche und -korrektur - > kann zentral durchgeführt werden
reduziert Programmieraufwand und Coderedundanz
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Welche Nachteile hat die Implementierungsvererbung?
kein Allheilnittel
- wahre Welt nicht immer hierarchisch
- Vererbung oft inflationär eingesetzt
starke Kopplung zwischen Super- und Subklassen
- Änderung an Super- wirkt sich auf Subklasse aus
- auch über viele Ebenen hinweg
viel Fehlerpotential
- falscher Featureeinsatz
- kaum Schutz vor Fehlverwendung
- wahre Welt nicht immer hierarchisch
- Vererbung oft inflationär eingesetzt
starke Kopplung zwischen Super- und Subklassen
- Änderung an Super- wirkt sich auf Subklasse aus
- auch über viele Ebenen hinweg
viel Fehlerpotential
- falscher Featureeinsatz
- kaum Schutz vor Fehlverwendung
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Was sind abstrakte Klassen und welche Eigenschaften haben sie?
Generalisierungen führen oft zu Klassen, die nie selbst initialisiert werden.
Schlüsselwort abstract verhindert Initialisierbarkeit
- können nicht mit new erzeugt werden
Abstrakte Klassen
- können nicht erzeugt werden
- können abstrakte Methoden beinhalten
- können konkrete Methoden beinhalten
Abstrakte Methoden
- haben keinen Rumpf
- müssen in Subklasse implementiert werden
- spielen bei Polymorphismus noch eine große Rolle
- können nicht in konkreten Klassen definiert werden
Schlüsselwort abstract verhindert Initialisierbarkeit
- können nicht mit new erzeugt werden
Abstrakte Klassen
- können nicht erzeugt werden
- können abstrakte Methoden beinhalten
- können konkrete Methoden beinhalten
Abstrakte Methoden
- haben keinen Rumpf
- müssen in Subklasse implementiert werden
- spielen bei Polymorphismus noch eine große Rolle
- können nicht in konkreten Klassen definiert werden
Tags: Generalisierung und Vererbung, VL 07
Source:
Source:
Flashcard set info:
Author: P-H-I-L
Main topic: Informatik
Topic: Java
Published: 13.04.2010
Card tags:
All cards (135)
Felder (6)
Programmelemente (26)
Terminologie (8)
VL 05 (15)
VL 07 (11)
VL04 (6)
VL08 (20)
VL09 GUI (2)