Skip to content

Latest commit

 

History

History
55 lines (48 loc) · 3.72 KB

lernjournal.md

File metadata and controls

55 lines (48 loc) · 3.72 KB

Back to main Page

Lernjournal 21.09.2022

Was habe ich diese Woche gemacht?

  • Abstrakte Classen
    Als Erstes haben wir zusammen in der Klasse angeschaut, was abstrakte Klassen sind und wie sie funktionieren. Wenn man eine Klasse in Java mit dem abstract Keyword anschreibt, kann man von dieser Klasse keine Instanz mehr erstellen. Nun könnte man sich natürlich fragen, warum sollte das einen Vorteil bringen. Die Antwort darauf ist relativ einfach. Die abstrakte Klasse kann immer noch in andere Klassen implementiert werden. Um auf das Beispiel aus der letzten Woche zu referenzieren, könnte man nun die Klasse Car abstrakt gestalten. Dadurch beinhaltet die Klasse Car zwar immer noch alle notwendigen Attribute und Methoden mitsamt ihrer Logik, kann allerdings nicht mehr distanziert werden (was ohnehin nie beabsichtigt war).
//ParentClass.java
public abstract class ParentClass{}

//ChildClass.java
public abstract class ChildClass extends ParentClass{}

//Main.java
public class Main{
    public static void main(String ... args){
         ParentClass parentClass = new ParrentClass(); //Does not compile because class is abstract
         ParentClass childClass = new ChildClass(); //Does compile because it is inizalized with child class
    }
}
  • Abstrakte Methoden
    Eine abstrakte Klasse beinhaltet natürlich auch Methoden. Diese können, müssen aber nicht abstrakt sein. Wenn eine Methode das abstract Keyword hat, besitzt diese Methode keinen Body mehr. Das bedeutet so viel wie, dass in der Klasse zwar steht, dass es eine Methode gibt, die z. B. start() heisst, das Implementieren von dieser Methode ist allerdings dann Sache von den Childklassen. Ein Beispiel dafür wäre z. B. die Methode . tanken() am Car. Dadurch könnte man beschreiben, dass es eine Methode geben muss, um das Auto aufzutanken. Die Implementation davon ist allerdings etwas, was die ChildKlassen übernehmen müssen z. B. darum, weil man ein Elektroauto anders tankt als ein Konventionelles. Natürlich können abstrakte Methoden nur in abstrakten Klassen erstellt werden.
public abstract class Car{
    public abstract void tanken();
}

public class ElektroCar extends Car{
    @Override
    public void tanken(){
        System.out.println("Elektroauto wird aufgeladen");
    }
}
  • Interfaces
    Ein Interface ist vom Faktor her eine abstrakte Klasse, bei der alle Methoden per Default abstract und public sind. Ein Interface wird anders als eine Klasse mit dem Implements Keyword implementiert. Im Gegensatz zu Klassen (nur eine Klasse kann pro Klasse impementiert werden) können in Java bis zu 65535 Interfaces in einer Klasse implementiert werden. Das liegt daran, dass ein Interface keine Logik beinhaltet -> auch wenn 2 verschiedene Interfaces dieselbe Methode implementieren, muss der Javacompiler at run time nicht zwischen 2 verschiedenen Codeblöcken entscheiden, da das implementieren von Logik nur in Klassen stattfinden kann.
public interface MyInterface {
    public void myMethod();
}
public class MyClass implements MyInterface {
    @Override
    public void myMethod() {
        System.out.println("Hello World!");
    }
}

Was habe ich gelernt?

Ich habe in dieser Woche eine gute Reflexion über Interfaces und abstrakten Klassen gehabt. Dabei habe ich auch ein paar interessante Fakten dazugelernt wie z. B., dass in Java Interfaces defaultmäßig alle Methoden public sind.

Reflexion

In dieser Woche bin ich gut vorangekommen. Ich habe alles im Unterricht behandelte gut verstanden und konnte daher auch die Aufgaben ohne grössere Probleme lösen. In der nächsten Woche muss ich noch an den Handlungskompetenzen weiterarbeiten, da ich diese Woche da nicht sonderlich weit gekommen bin.