Tutorial
Type als Objekt - Das UDT-Tutorial Teil 1
von MOD | Seite 5 von 8 |
Private/Public/Protected
Standardmäßig sind alle Elemente des bar-Types Public, d.h. wir können sie lesen/schreiben oder aufrufen. Manchmal jedoch ist es besser, sie Private zu machen. Nehmen wir z.B. unser Element p_x. Momentan können wir schreiben 'Print *foo.p_x' und damit den Wert ausgeben, auf den es zeigt. Wir könnten es Private machen, damit nur die Methoden innerhalb der Variable 'foo' (Constructor, Destructor, Property, und die Methoden) darauf zugreifen können. So stellen wir sicher, dass wir nur auf p_x zugreifen können, indem wir Methoden zur Sicherheit verwenden. Würden wir z.B. 'DeAllocate(foo.p_x)' im Hauptprogramm schreiben, würde der Destructor bei Zerstören des Objekts versuchen, die Variable erneut freizugeben, was als 'doppelte Freigabe' bekannt ist. Wir ändern unseren Code wie folgt:
Type bar
Declare Constructor()
Declare Destructor()
Declare Property x() As Integer
Declare Property x(ByVal n As Integer)
Declare Sub Mul5()
Declare Function Addr() As Integer Ptr
Private:
p_x As Integer Ptr
End Type
Wir fügen 'Print *foo.p_x' im Hauptprogramm ein und versuchen, es zu kompilieren. Es wird eine Meldung vom Compiler kommen: 'error 173: Illegal member access, found 'p_x' in 'Print *foo.p_x''.
Dies zeigt, dass der Compiler wirklich auf die Tatsache stößt, dass wir p_x private gemacht haben. Wird 'private:' oder 'public:' benutzt, folgen alle Elemente nach dieser Anweisung auch dieser Regel.
Hier ist ein eher sinnfreies Beispiel, einfach um die Syntax zu zeigen:
Type bar
Private:
a As Integer
b As Integer
Public:
c As Integer
d As Integer
Private:
e As Integer
End Type
Im obigen Type sind die Elemente 'a', 'b' und 'e' private, 'c' und 'd' sind public.
Protected ist zwar definiert, hat allerdings noch keine Auswirkungen. Erst wenn FreeBASIC echte Klassen mit Vererbung beherrscht, wird dieser Befehl interessant.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|