Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [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 - ABSTRACT

Referenz-Navigation

 

Syntax:

TYPE Typname EXTENDS Elterntyp
  DECLARE ABSTRACT {SUB|FUNCTION|PROPERTY|OPERATOR} ...
END TYPE

Typ: Klausel
Kategorie: Klassen

ABSTRACT ist eine spezielle Form von BefehlsreferenzeintragVIRTUAL. Im Gegensatz zu virtuellen Methoden wird bei abstrakten kein Methodenkörper (body) geschrieben, also der eigentliche Code, der die Methode implementiert. Dadurch können sog. Externer Link!Interfaces erstellt werden, die von erbenden Klassen implementiert werden.
Damit eine abstrakte Methode also aufgerufen werden kann, muss sie durch die erbende Klasse überschrieben und implementiert werden, da es sonst zu einem Programmabsturz kommt.

BefehlsreferenzeintragKonstruktoren können nicht abstrakt sein, da sie auch nicht virtuell sein können. Siehe dazu BefehlsreferenzeintragVIRTUAL. Weiterhin können auch BefehlsreferenzeintragDestruktoren nicht abstrakt sein, da es stets möglich sein muss, den Speicher einer Variablen freizugeben.

Beachte:
In einer mehrstufigen Vererbungshierarchie kann eine überschriebene Methode auf jeder Ebene als abstrakt, virtuell oder normal deklariert werden. Werden die Varianten gemischt, gilt folgende Reihenfolge von oben nach unten in der Hierarchie: Abstrakt -> Virtuell -> Normal.

Beispiel:

Type Hello Extends Object
  Declare Abstract Sub hi
End Type

Type HelloEnglish Extends Hello
  Declare Sub hi
End Type

Type HelloFrench Extends Hello
  Declare Sub hi
End Type

Type HelloGerman Extends Hello
  Declare Sub hi
End Type


Sub HelloEnglish.hi
  Print "Hello!"
End Sub

Sub HelloFrench.hi
    Print "Salut!"
End Sub

Sub HelloGerman.hi
  Print "Hallo!"
End Sub


Randomize

Dim As Hello Ptr h

For i As Integer = 0 To 9
  Select Case Int(Rnd*3) + 1
    Case 1
      h = New HelloFrench
    Case 2
      h = New HelloGerman
    Case Else
      h = New HelloEnglish
  End Select

  h->hi( )
  Delete h
Next

Sleep

Vergleich zu anderen Sprachen:
Abstrakte Methoden werden in C++ als "Externer Link!pure virtual" bezeichnet. Anders als in FreeBASIC erlaubt es C++, dass "pure virtuals" einen Methodenkörper besitzen.

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.90.0

Unterschiede unter den FB-Dialektformen: nur in der Dialektform Befehlsreferenzeintrag-lang fb verfügbar

Siehe auch:
BefehlsreferenzeintragVIRTUAL, BefehlsreferenzeintragTYPE, BefehlsreferenzeintragEXTENDS, BefehlsreferenzeintragOBJECT, BefehlsreferenzeintragObjektorientierung


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