❌ Der Konstruktor ist fälschlich als public void Counter() deklariert – das ist eine Methode, kein Konstruktor.
public void Counter()
✅ Korrekt wäre: public Counter() { count = 0; }
public Counter() { count = 0; }
✅ increment() ist korrekt – sie erhöht das Attribut count.
increment()
count
⚠️ Optional: Man könnte increment() so ändern, dass es den neuen Wert zurückgibt, aber das ist keine Pflicht.
❌ Dog hat keinen passenden Konstruktor, obwohl Animal einen Konstruktor mit String-Parameter hat.
Dog
Animal
String
✅ Java ruft implizit super() auf, aber der existiert hier nicht → Kompilierfehler.
super()
✅ Lösung: Dog muss entweder einen Konstruktor mit super(name) angeben oder Animal braucht einen parameterlosen Konstruktor.
super(name)
✅ speak() wird korrekt überschrieben. Keine Pflicht zur Überschreibung, da Animal keine abstrakte Methode hat.
speak()
✅ Code ist korrekt: Syntax und Fehlerbehandlung sind funktional.
✅ Der catch-Block behandelt Division durch 0 sinnvoll.
catch
⚠️ Optional: Rückgabe von 0 kann irreführend sein – vielleicht besser: explizit Exception weiterwerfen oder speziellen Fehlerwert zurückgeben.
0
⚠️ Optional: Ganzzahldivision begrenzt Genauigkeit. Für Nachkommastellen lieber public double divide(double a, double b) nutzen.
public double divide(double a, double b)
❌ Verwendung eines fixen Arrays (Book[]) ist unflexibel – Anzahl der Bücher ist begrenzt.
Book[]
❌ Kein Check auf Überlauf (if (count < books.length)) → potenzieller Laufzeitfehler.
if (count < books.length)
✅ Verbesserung: ArrayList<Book> verwenden → dynamisch erweiterbar.
ArrayList<Book>
✅ Konstruktor, Getter, und addBook()-Logik sind ansonsten korrekt.
addBook()
✅ count ist static → geteilt von allen Objekten der Klasse.
static
✅ Konstruktor erhöht count → zählt, wie viele Objekte erstellt wurden.
⚠️ Potenziell verwirrend, wenn man denkt, getCount() liefert den Wert eines einzelnen Objekts – tut es aber nicht.
getCount()
❗ Wenn man pro Objekt zählen will, darf count nicht static sein.
✅ Gültiger Anwendungsfall für static: globale Zählung von Instanzen.
❌ Fehler: Konstruktor Car(String brand) ruft nicht explizit super(brand) auf.
Car(String brand)
super(brand)
❌ Vehicle hat keinen parameterlosen Konstruktor → Compilerfehler bei implizitem super().
Vehicle
✅ Lösung: super(brand); in den Konstruktor von Car einfügen.
super(brand);
Car
⚠️ Hinweis: Zugriff auf brand in Vehicle ist nicht direkt möglich, da private.
brand
private
printBrand() funktioniert aber, weil sie innerhalb von Vehicle definiert ist.
printBrand()
Zugriff von Car aus wäre nur über protected oder Getter möglich.
protected
Zuletzt geändertvor 12 Tagen