Agenda

  • Wiederholung
  • Vererbung
  • Konstruktoren II
  • Zusammenfassung

Wiederholung

Java API

  • Wrapper Klassen
  • LocalDateTime
  • File

final modifier

  • Attribute
  • Variablen

Enumeration

  • Gruppe von Konstanten
  • switch
  • isBinary
  • values, ordinal

Klassendiagramm

  • Bereiche
  • + - # ~
  • static
  • { final }
  • << enumeration >>

Vererbung

Gemeinsamkeiten von Unterschiedlichen Klassen

  • Auto & Truck
  • Baby, Kind & Erwachsener
  • Samsung Galaxy S1, S2,... S21

Vererbung ermöglicht die Wiederverwendung von:

  • Attributen
  • Methoden

Generalisierung

Generalisierung bedeutet alle gemeinsamen Attribute und Methoden mehrerer Klassen in eine weitere Klasse zu extrahieren.

z.B. von Cat/Dog in die Klasse Animal

Vererbung

Vererbung bedeutet alle Attribute und Methoden einer Klasse einer anderen Klasse zu übertragen.

z.B. Cat und Dog bekommen alle Attribute und Methoden der Klasse Animal

Beispiel extends

public class Dog extends Animal {
  public void bark() {
   System.out.println("Wuff");
  }
}

Demo - Vererbung

  • Generalisierung von Dog und Cat
  • Vererbung an Dog und Cat

Das Schlüsselwort super

  • wird verwendet um den Konstruktor der vererbenden Klasse auszuführen
  • muss als erste Methode im Konstruktor ausgeführt werden

Beispiel super

public class Animal {
  public Animal(String name) {
    this.name = name;
  }
}

public class Dog extends Animal {
  public Dog(String name) {
    super(name);
  }
}

Demo - super

  • super call mit Animal

der protected modifier

  • weiterer Access modifier wie public und private
  • kann angewendet werden auf Attribute, Methoden und Konstruktoren

Auswirkung von protected

Methoden, Attribute und Konstruktoren die mit protected markiert sind können ausgeführt werden von:

  • erbenden Klassen
  • Klassen im gleichen Package🤯*

*NKR

Demo - protected

  • public name
  • private name
  • protected name

Konstruktoren II

Konstruktoren II

  • spezifische Konstruktoren
  • unspezifische Konstruktoren

spezifische Konstruktoren

  • initialisieren alle Attribute
  • (fast) alle Attribute als Parameter

spezifischer Konstruktor

public class Car {
  public int hp;
  public char engineType;
  
  public Car(int hp, char engineType) {
   this.hp = hp;
   this.engineType = engineType;
  }
}

unspezifische Konstruktoren

  • verwenden spezifischen Konstruktor
  • nicht alle Attribute als Parameter

unspezifischer Konstruktor

public class Car {
  public int hp;
  public char engineType;
  
  public Car(int hp) {
   this.hp = hp;
   this.engineType = 'b';
  }
}

Konstruktor wiederverwenden

public class Car {
  public int hp;
  public char engineType;
  
  public Car(int hp) {
   this(hp, 'b');
  }
  public Car(int hp, char engineType) {
   this.hp = hp;
   this.engineType = engineType;
  }
}

Demo - Konstruktoren II

  • Attribut age in Dog (default 0)
  • Attribut age in Animal

Zusammenfassung

  • Gemeinsamkeiten mehrerer Klassen
  • Generalisierung
  • Vererbung
  • protected
  • super

Rest of the day