Dart Basic: abstract class Part 2

Im letzten Artikel zu diesem Thema, sind wir in die Materie abstract class in Dart eingestiegen. In diesem Post schauen wir uns weitere Aspekte an.

Wir haben gelernt, das wir von einer abstrakten Klasse nicht direkt ein Objekt erzeugen können. Wir können sie aber mit extends erweitern und ergänzen.

Sollte diese Klasse auch abstrakte Methoden implementieren, müssen wir diese zwingend in unserer "erweiterten" Klasse umsetzen. Jetzt hatten wir schon im letzten Artikel zu diesem Thema die Frage nach dem Nutzen gestellt und das Beispiel einer Benutzerverwaltung  erwähnt.

Hier noch ein anderer Blickwinkel:
Wenn wir mit abstrakten Klassen arbeiten, zwingen wir uns, oder wenn sie vorgegeben werden, werden wir gezwungen, uns an gewisse Vorgaben zu halten. 
Vor allem in grösseren Codeprojekten ist das ein nicht zu unterschätzender Faktor.



Im Code oben sehen wir eine abstrakte Klasse mit zwei abstrakten Methoden und einer "normalen". Anschließend implementieren wir eine neue Klasse durch extends.
Bei diesem Code geht es nicht um den Inhalt, sondern um die Struktur und die zeigt folgendes:

Eine abstrakte Klasse in Dart kann:


  • abstrakte Methoden enthalten.
  • "normale" Methoden enthalten
  • Variablen definieren
  • einen Konstruktor definieren
  • keinen Konstruktor definieren und stattdessen Dart einen generieren lassen

Jetzt ist es an der Zeit auch ein wenig die Begriffsvielfalt aufzuklären, auf die man trifft, wenn man online über objektorientierte Programmierung recherchiert. Wenn wir unser Code Beispiel anschauen dann wird:

  • die Klasse Benutzer auch genannt: SUPER class oder BASE class oder PARENT class 
  • die Klasse muser auch genannt: SUB class oder CHILD class 
Was Super class angeht: Wenn wir Dart Code anschauen, kann es ab und zu vorkommen, das wir auf super treffen. Mit diesem Schlüsselwort wird auf die SUPER class Bezug genommen. Hier ein Beispiel:


In diesem Beispiel definiert die abstrakte Klasse einen Konstruktor. Diese Funktion benötigt zwei Variablen. In unserer extends Klasse fügen wir dem Konstruktor noch eine dritte Variable hinzu.
Das reicht aber nicht aus.
Da wir in der abstrakten Klasse zwei Variablen für den Konstruktor definiert haben, müssen wir diese
bei der Erstellung der extends Klasse miteinbeziehen.  Dazu benötigen wir das Konstrukt :super(....).
Mit seiner Hilfe initialisieren wir die Variablen des Konstruktors unserer abstrakten Klasse.

Man kann es aber auch so sehen: wenn wir mit extends eine Klasse erweitern und keinen eigenen Konstruktor implementieren, kommt der Konstruktor der Super Klasse zum tragen.

to be continued...

Kommentare

Beliebte Posts aus diesem Blog

Listen in Dart (2021): Part 1 List.filled List.empty und List.add

Dart und Klassen

Flutter Beispiel 6 -- BoxDecoration