PKW, LKW -> Fahrzeug
//Oberklasse:
abstract class Fahrzeug {
protected String farbe; //protected -> verfügbar in unterklassen
public Fahrzeug(String farbe) { //Konstruktor der Klasse "Fahrzeug"
this.farbe = farbe;
}
}
//Unterklassen:
class LKW extends Fahrzeug {
private double maxGewicht;
public LKW(String farbe, double maxGewicht) { //Konstruktor der Klasse LKW
super(farbe); //ruft den Konstruktor der Klasse "Fahrzeug" auf
this.maxGewicht = maxGewicht;
}
}
class PKW extends Fahrzeug {
private int tueren;
public PKW(String farbe, int tueren) { //Konstruktor der Klasse PKW
super(farbe); //ruft den Konstruktor der Klasse "Fahrzeug" auf
this.tueren = tueren;
}
}
Haus -> Schule, Krankenhaus
//Oberklasse
abstract class Haus {
protected boolean fenster; //protected -> verfügbar in unterklassen
public Haus(boolean fenster) {
this.fenster = fenster;
}
}
//Unterklassen
class Schule extends Haus {
private int tueren;
public Schule(boolean fenster, int tueren) {
super(fenster);
this.tueren = tueren;
}
}
class Krankenhaus extends Haus {
private int betten;
public Krankenhaus(boolean fenster, int betten) {
super(fenster);
this.betten = betten;
}
}
Beides ist das Gleiche. Spezialisierung kann auch als generalisierung angesehen werden. Die Implementation ist identisch.
Spezialisierung -> Eine Klasse, die in mehrere spezialisiert wird
Generalisierung -> mehrere Klassen die in eine vereinfacht/zusammengefasst werden (diese Klasse hat dann die gemeinsamen Attribute und Methoden)