Back to main Page

Lernjournal 14.09.2022

Was habe ich diese Woche gemacht?

/**
ChildClass erbt von ParrentClass
*/
public class ChildClass extends ParrentClass{

}

In Java kann im gegensatz zu anderen Programmiersprachen wie z.B. C++ oder auch Python immer nur eine Klasse extendet werden. Das liegt unter anderem daran, dass das Extenden von mehreren Klassen sehr fehleranfällig sein kann. Wenn z.B. 2 Klassen dieselbe Methode .start() haben, ist immer die Frage, welche von beiden implementierten Methoden nun aufgerufen wird. Etwas anders sieht es dabei bei der Implementation von Interfaces aus. Diese können in Java beliebig häufig implementiert werden. Interfaces beinhalten im Gegensatz zu Klassen allerdings auch nur die Struktur und keine Logik. Ein Beispiel von mehreren Interfaces stellt die java.lang.String Klasse dar.

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc {
}

Statische Polymorphie
Statische Polymorphie hat eigentlich nichts mit statischen Methoden oder Attributen zu tun. Bei statischer Polymorphie werden Methoden oder auch Construktoren überladen. D.h., dass es mehrere Ausführungen von einem Konstruktor gibt, der sich nur anhand der Parameter unterscheidet.

public class Car{
    public Car(){}             // Die Konstruktoren unterscheiden sich nur
    public Car(String name){}  // anhand der Parameter
}

Dynamische Polymorphie
Bei dynamischer Polymorphie werden die Konstruktoren nicht um Parameter erweitetert, sondern überschrieben. Dynamische Polymorphie kommt z.B. dann zum Einsatz, wenn sich etwas in der Logik der Childklasse ändert.

public class Parent{
    public void doSomething(){}
}

public class Child extends Parent{
    
    @Overide
    public void doSomething(){
        System.out.println("Now I'm doing something");
    }
}

Was habe ich gelernt?

In dieser Woche konnte ich nochmals gut das Thema Vererbung repetieren. Dabei habe ich neu hinzugelernt, was der Unterschied zwischen statischer und dynamischer Polymorphie ist. Auserdem war mir zwar vorher schon bewusst, dass man in Java nur eine Klasse extenden kann. Allerdings waren mir die Hintergründe dafür nicht bekannt. Vermutlich ist dies auch der Fall, weil ich auch in Python noch nie nur auf die Idee gekommen wäre 2 Klassen zu extenden.

Reflexion

Ich denke, dass ich diese Woche gut vorangekommen bin. Ich konnte gut das Thema Vererbung repetieren und konnte dazu auch noch Neues dazulernen.