Syntax:
TYPE TypeName
PROTECTED:
' geschützte Deklarationen
END TYPE
Typ: Schlüsselwort
Kategorie: Programmorganisation
Legt fest, dass die folgenden Deklarationen PROTECTED sein sollen, d.h. dass ein Zugriff nur von TYPE-eigenen Prozeduren aus zulässig ist.
Innerhalb der Typen-Deklaration wird die Zeile
PROTECTED:
eingefügt, sobald ein folgende Deklarationen geschützt sein soll, d.h. wenn der Zugriff darauf eingeschränkt werden soll.
Standardmäßig sind alle Deklarationen PUBLIC. Dies ist auch dann der Fall, wenn eine vorhergehende Typendeklaration mit PRIVATE abgeschlossen wurde.
Auf PUBLIC-Records kann aus jeder Programmsituation zugegriffen werden; auf PROTECTED-Deklarationen dürfen nur TYPE-eigene Prozeduren (SUBs, FUNCTIONs, PROPERTYs, OPERATORs, Klassen-Konstruktoren und Klassen-Destruktoren), und solche, die sich in TYPEs befinden, die vom Basis-UDT erben, zugreifen.
Ein Zugriff auf geschützte Deklarationen von außerhalb einer TYPE-eigenen Prozedur führt zu der Compiler-Fehlermeldung
Illegal member access
PROTECTED spielt vor allem in Verbindung mit Vererbung eine Rolle. Records, die PRIVATE sind, können nicht von Kind-Klassen verwendet werden, wohingegen PUBLIC und PROTECTED Records auch durch die Kind-Klasse verwendet werden dürfen.
Beispiel:
Type mutter
Private:
x As Integer = 1
Protected:
y As Integer = 2
Public:
z As Integer = 3
End Type
Type kind Extends mutter
dummy As Integer
Declare Sub ausgeben()
End Type
Sub kind.ausgeben()
'Print x 'Funktioniert nicht, da x Private für die Mutter-Klasse ist
Print y
Print z
End Sub
Dim As kind einKind
einKind.ausgeben()
Sleep
Unterschiede zu älteren FreeBASIC-Versionen:
- Bis einschließlich Version 0.22.0 hat PROTECTED überhaupt keine Funktion, ab der SVN Version 0.23.0 verhält es sich hingegen wie PRIVATE.
Unterschiede zu anderen FreeBASIC-Dialektformen:
- Nur gültig für -lang fb
Unterschiede zu QuickBASIC:
- Neu in FreeBASIC
Siehe auch:
PRIVATE (UDT), PUBLIC (UDT), TYPE (UDT), EXTENDS