Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - EXTENDS

Referenz-Navigation

 

Syntax: TYPE kindKlasse EXTENDS basisKlasse
Typ: Anweisung
Kategorie: Klassen

EXTENDS wird in Verbindung mit Vererbung bei BefehlsreferenzeintragTYPE und BefehlsreferenzeintragUNION verwendet. Dabei gibt das Schlüsselwort an, dass die eigene Klasse die Attribute und Methoden einer bereits bestehenden erbt, also erhält, ohne dass man diese zusätzlich angeben müsste.

Es ist auch möglich, von BefehlsreferenzeintragZSTRING und BefehlsreferenzeintragWSTRING zu erben. Ein UDT, das als EXTENDS ZSTRING (bzw. als EXTENDS WSTRING) deklariert wird, ist damit - eine entsprechende BefehlsreferenzeintragCAST-Funktion vorausgesetzt - vollständig kompatibel zu Stringfunktionen wie BefehlsreferenzeintragSTRPTR/BefehlsreferenzeintragSADD, BefehlsreferenzeintragSELECT CASE, BefehlsreferenzeintragTRIM oder BefehlsreferenzeintragMID, wo sie als ZSTRING (bzw. WSTRING) behandelt werden. BefehlsreferenzeintragLEN gibt die Größe des UDTs zurück, kann aber passend überladen werden.
Nicht möglich ist im Moment noch der Einsatz von BefehlsreferenzeintragLEFT, BefehlsreferenzeintragRIGHT und die Umwandlungsfunktionen BefehlsreferenzeintragVAL, BefehlsreferenzeintragVALINT usw.

Beispiel 1:

Type Haustier Extends Object
  As Integer beine = 4
  As Integer schwanz = 1
End Type

Type Hund Extends Haustier
  As Integer anhaenglich = 1
  Declare Sub gibLaut
End Type
Sub Hund.gibLaut
  Print "Wuff!"
End Sub

Type Chihuahua Extends Hund
  Declare Sub gibLaut
End Type
Sub Chihuahua.gibLaut
  Print "Klaeffklaeff!"
End Sub

Type Bernhardiner Extends Hund
  As Integer gutmuetig = 1
End Type

'#####################################################

Dim benno As Bernhardiner, husky As Chihuahua
Print "Benno hat " & benno.beine & " Beine und " & benno.schwanz & " Schwanz."
Print "Benno ist gutmuetig (Wert " & benno.gutmuetig & ")."
benno.gibLaut
Print
Print "Husky hat " & husky.beine & " Beine und " & husky.schwanz & " Schwanz."
husky.gibLaut
Print

Sleep

Ausgabe:

Benno hat 4 Beine und 1 Schwanz.
Benno ist gutmuetig (Wert 1).
Wuff!

Husky hat 4 Beine und 1 Schwanz.
Klaeffklaeff!

Erläuterung: Sowohl Benno als auch Husky erben die Attribute 'beine' und 'schwanz' vom Elternobjekt. 'gutmuetig' steht nur Benno zur Verfügung. Dafür besitzt Husky eine eigene 'gibLaut'-Methode, während Benno auf die Methode des Elternobjekts zugreift.

Beispiel 2: Erben von einem ZSTRING

TYPE myZstring EXTENDS ZSTRING
  PUBLIC:
    DECLARE CONSTRUCTOR  (BYREF z AS CONST ZSTRING = "")
    DECLARE OPERATOR CAST BYREF AS CONST ZSTRING
    DECLARE OPERATOR LET (BYREF z AS CONST ZSTRING)
  Private:
    DIM AS STRING s
End Type

CONSTRUCTOR myZstring(BYREF z AS CONST ZSTRING = "")
  THIS.s = z
END CONSTRUCTOR

OPERATOR myZstring.CAST () BYREF AS CONST ZSTRING
  RETURN *STRPTR(THIS.s)
END OPERATOR

OPERATOR myZstring.LET(BYREF z AS CONST ZSTRING)
  THIS.s = z
END OPERATOR

OPERATOR LEN(z AS myZstring) AS INTEGER
  RETURN LEN(STR(z))
END OPERATOR

DIM AS myZstring z = "FreeBASIC"
z &= "-Compiler"
PRINT "Das Wort '" & z & "' ist " & LEN(z) & " Zeichen lang."
PRINT "Sein erstes Zeichen besitzt den ASCII-Code " & ASC(z) & "."
PRINT "Teilstring MID(z, 5, 5): " & MID(z, 5, 5)
SLEEP

Ausgabe:

Das Wort 'FreeBASIC-Compiler' ist 18 Zeichen lang.
Sein erstes Zeichen besitzt den ASCII-Code 70.
Teilstring MID(z, 5, 5): BASIC

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Unterschiede unter den FB-Dialektformen:
In der Dialektform Befehlsreferenzeintrag-lang qb steht EXTENDS nicht zur Verfügung und kann nur über __EXTENDS aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragTYPE (UDT), BefehlsreferenzeintragUNION, BefehlsreferenzeintragBASE, BefehlsreferenzeintragOBJECT, BefehlsreferenzeintragIS (Vererbung), BefehlsreferenzeintragObjektorientierung


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 08.01.2012 von RedakteurMOD angelegt.
  • Die aktuellste Version wurde am 27.08.2020 von Redakteurnemored gespeichert.
  Versionen Versionen