Referenz - PROTECTED
Syntax:
TYPE TypeName
PROTECTED:
' Deklaration geschützter Attribute
END TYPE
Typ: Schlüsselwort
Kategorie: Klassen
PROTECTED legt fest, dass die folgenden Deklarationen geschützt sein sollen, d. h. dass ein Zugriff nur von UDT-eigenen Prozeduren aus zulässig ist. Das Schlüsselwort ist in dieser Form nur dann zulässig, wenn mit der Kommandozeilenoption -lang fb compiliert wurde (Standard).
Mit PROTECTED ist es möglich, den Zugriff auf UDT-Attribute einzuschränken. Der Zweck liegt darin, dass der Zugriff auf die entsprechenden Attribute nur noch über benutzerdefinierte Prozeduren ermöglicht wird, die eventuelle Fehler schon beim Zugriffsversuch abfangen, den Wert in ein besser verwertbares Format umwandeln, etc.
Der UDT wird regulär definiert. 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. PROTECTED gilt innerhalb des UDTs so lange, bis es durch das Schlüsselwort PUBLIC oder PRIVATE abgelöst wird.
Standardmäßig sind alle Attribute PUBLIC. Dies ist auch dann der Fall, wenn eine vorhergehende Typendeklaration mit PRIVATE oder PROTECTED abgeschlossen wurde.
Auf PUBLIC-Attribute kann aus jeder Programmsituation heraus zugegriffen werden; auf PRIVATE-Attribute dürfen nur UDT-eigene Prozeduren (SUBs, FUNCTIONs, PROPERTYs, OPERATORs, Klassen-Konstruktoren und Klassen-Destruktoren) zugreifen. PROTECTED-Attribute verhalten sich wie PRIVATE-Attribute, jedoch können auf sie auch Prozeduren zugreifen, die sich in UDTs befinden, welche vom Basis-UDT erben (siehe EXTENDS).
Beachten Sie, dass auch die Prozeduren eines UDTs PUBLIC, PROTECTED oder PRIVATE sein können.
Ein Zugriff auf ein geschütztes Attribut von außerhalb einer UDT-eigenen Prozedur führt zu der Compiler-Fehlermeldung
Illegal member access
Es ist erlaubt, innerhalb eines UDTs beliebig viele PUBLIC-, PRIVATE- und PROTECTED-Blöcke einzurichten.
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 QB: neu in FreeBASIC
Unterschiede zu früheren Versionen von FreeBASIC:
- Vererbung existiert seit FreeBASIC v0.24.0. Davor hatte PROTECTED keine eigene Bedeutung.
- In FreeBASIC v0.23 verhielt sich PROTECTED genauso wie PRIVATE.
- Vor FreeBASIC v0.23 hatte PROTECTED keine Funktion
Unterschiede unter den FB-Dialektformen: nur in der Dialektform -lang fb verfügbar
Siehe auch:
PRIVATE (UDT), PUBLIC (UDT), TYPE (UDT), THIS, EXTENDS, Objektorientierung
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|