Überschreiben von toString() (Teil 12) - Objektorientierung: Kapselung/Vererbung/Polymorphie

In Teil 12 meines Kurses zu den drei Säulen der Objektorientierung geht es um das Überschreiben der Methode toString() und die Funktionsweise von System.out.println(). Spoiler: Es wird um die Vertiefung der Polymorphie gehen! :-)
----
Deine Hausaufgabe:
Überschreibe die Methode toString() in Kaffeesorte und Softdrinksorte
und implementiere sie wie getName().
Lösche die Methode getName() und korrigiere alle Aufrufe, indem du
dich auf den automatischen Aufruf von toString() verlässt.
Überschreibe die Methode toString() in Getraenkeautomat und rufe
darin getBeschreibung() auf.
Überschreibe die Methode toString() in Techikerin und gib ihren Namen
zurück, z.B. "Technikerin Sandra".
Gib in Technikerin.warte() die Technikerin und den Automaten aus anstatt
nur ihren Namen bzw. seine Bezeichnung.
Entferne alle Aufrufe von getBeschreibung() an Automaten in der
Main-Methode in Kantine.
Prüfe, dass die Ausgabe immer noch vollständig ist.
----
00:00 Einleitung
00:35 System.out.println() nutzt Polymorphie
00:48 Bisheriger Code
01:48 Review von getBeschreibung()
02:19 Objekte direkt ausgeben
03:10 println() ist überladen
04:33 Welcher Parameter ist polymorph?
05:28 Jede Klasse erbt von Objekt
06:46 toString() vererbt von Object
07:56 Standardimplementierung von toString()
09:01 hashCode() sollten alle Java-Devs kennen
09:23 Aufruf von toString()
09:48 toString() überschreiben
11:05 Object ist polymorph
11:26 Implementierung von println()
12:38 Polymorphie zur Erweiterbarkeit
13:45 Code sparen mit toString()
15:24 toString() im Fahrzeug überschreiben
16:26 toString() in Kunde überschreiben
17:09 toString() wird automatisch aufgerufen
17:37 toString() in Enums
19:18 toString() in Farbe überschreiben
20:13 toString() bei Konkatenation
22:02 Technik und keine Magie
23:04 Hausaufgabe 12

Пікірлер: 11

  • @Kintrax476
    @Kintrax476Ай бұрын

    Hi, vielen Dank für die wirklich nützlichen Videos. Es gelingt Ihnen, dieses komplexe Thema und die Zusammenhänge sehr verständlich und nachvollziehbar zu erklären.

  • @StefanMacke

    @StefanMacke

    Ай бұрын

    Das freut mich und war das Ziel! :-)

  • @ammaralhallak498
    @ammaralhallak498Ай бұрын

    Vielen Dank für das Video. Es wäre sehr hilfreich, wenn Sie auch Video über Streams und Datenstruktur machen würden. Danke im Voraus

  • @StefanMacke

    @StefanMacke

    Ай бұрын

    Streams habe ich tatsächlich als nächstes vor!

  • @HuiminLuo
    @HuiminLuoАй бұрын

    Was ist Laufzeit?

  • @StefanMacke

    @StefanMacke

    Ай бұрын

    Laufzeit ist die Zeit der Ausführung des Programms im Kontrast zur Compilezeit, zu der der Compiler das Programm übersetzt.

  • @HuiminLuo

    @HuiminLuo

    Ай бұрын

    Wird der Code, der zur Laufzeit ausgeführt wird, im Teil der Main-Methode gefunden?

  • @HuiminLuo

    @HuiminLuo

    Ай бұрын

    Was geschieht während der Compilerzeit und was während der Laufzeit? Warum ist es nicht möglich, diese beiden Phasen zu vereinen?

  • @Kintrax476

    @Kintrax476

    Ай бұрын

    @@HuiminLuo Ich versuche das mal zu beantworten auch wenn ich selber noch ein Lernender bin. Die Laufzeit kann man so verstehen das wenn ich ein Programm gestartet habe, zum Beispiel ein E-Mail Klienten und ich das geöffnete Fenster des Programms vor mir sehe und Dinge anklicken kann wie "Anworten, Senden, etc." dann läuft das Programm. Das ist die Laufzeit weil es läuft. Wenn ich nun auf zum Beispiel Senden klicke und das Programm stürzt ab oder gibt eine Fehlermeldung aus, dann ist das ein Laufzeitfehler. Der Fehler tritt während der Laufzeit auf. Die Kompilierzeit ist der Moment oder die Zeit in der der geschrieben Code in Maschinencode übersetzt wird damit der PC das Programm ausführen kann. Hier auftretende Fehler, aufgrund fehlerhafter Syntax, etc. führen zu einem Kompilierfehler. Dadurch wird die Kompilierung (Übersetzung) abgebrochen und das Programm kann gar nicht erst gestartet werden. Bitte verbessert oder ergänzt mich falls das nicht richtig ist.

  • @HuiminLuo

    @HuiminLuo

    Ай бұрын

    @@Kintrax476 Danke! Es ist hier schwer nachzuvollziehen, da beide vom gleichen Quellcode übersetzt und ausgeführt werden, einige Codes jedoch erst während der Laufzeit ausgeführt werden. Das heißt, ohne Kompilierung( keine entsprechende Bytecode) kennt das Virtuell Maschinen trotzdem hier ?