Repository navigation
Protected Access Control
Home › User Defined Types › Protected: (Access Control)
Specifies protected member access control in a Type or Class
Type typename
Protected:
member declarations
End Typetypenamemember declarations
Protected: indicates that member declarations following it have protected access.
Protected members are accessible only from inside a member procedure of their Type or Class, and classes which are derived from this Type or Class. Seen from inside such a member procedure, it is as if the protected member is in fact public, and that regardless of the object on which the access operator is applied.
member declarations following Protected: are protected until a different access control specifier is given, like Private: or Public:.
Members in a Type declaration are Public: by default if no member access control specifier is given.
- Available only in the -lang fb dialect.
- New to FreeBASIC
Type animal
Dim As String animalName
Protected:
Dim As Integer serialNumber
End Type
Type dog Extends animal
Dim As String masterName
Declare Sub setSerialNumber ( ByVal number As Integer )
End Type
Sub dog.setSerialNumber ( ByVal number As Integer )
'' This is OK. We're inside a member function of the derived type
This.serialNumber = number
End Sub
Dim As dog d
'' This is OK, animalName is public
d.animalName = "Buddy"
'' this would generate a compile error:
'' - serialNumber is protected and we're trying to access it outside its type and the derived type
'' d.serialNumber = 123456789' Example to illustrate the access control 'Protected' with a token provided by an admin right for an user right:
' - The 'admin_right' type extends the 'user_right' type.
' - Create directly an 'user_right' object is forbidden.
' ('default user_right.constructor' access and 'copy user_right.constructor' access are 'Protected')
' - The 'user_right' type has only the access right to get the token.
' ('user_right.token' get-property access is 'Public' and 'user_right.token' set-property access is 'protected')
' - The 'admin_right' type has the access rights to set and to get the token.
' ('admin_right.token' get-property access and 'admin_right.token' set-property access are 'Public')
'
' An 'admin_right' object is created, and then a reference of type 'user_right' to this object is defined.
' (create directly an 'user_right' object is forbidden)
Type user_right
Public:
Declare Property token () As String '' 'Public' to authorize user_right token get
Protected:
Declare Constructor () '' 'Protected' to forbid user_right object default-construction
Declare Constructor (ByRef u As user_right) '' 'Protected' to forbid user_right object copy-construction
Declare Property token (ByRef s As String) '' 'Protected' to forbid user_right token set
Private:
Dim As String user_right_token '' 'Private' to forbid access from outside user_right
End Type
Constructor user_right () '' Default-constructor
End Constructor
Constructor user_right (ByRef u As user_right) '' Protected copy-constructor
This.user_right_token = u.user_right_token
End Constructor
Property user_right.token () As String '' Public property user_right token get
Return This.user_right_token
End Property
Property user_right.token (ByRef s As String) '' Protected property user_right token set
This.user_right_token = s
End Property
Type admin_right Extends user_right
Public:
Declare Property token () As String '' 'Public' to authorize admin_right token get
Declare Property token (ByRef s As String) '' 'Public' to authorize admin_right token set
End Type
Property admin_right.token () As String '' Public property admin_right token get
Return Base.token '' 'Base.' to access to the base type property shadowed by this property name
End Property
Property admin_right.token (ByRef s As String) '' Public property admin_right token set
Base.token = s '' 'Base.' to access to the base type property shadowed by this property name
End Property
Dim As admin_right ar '' Create an admin_right type object 'ar'
ar.token = "fxm123456789" '' admin_right set the token for user_right
Print "'" & ar.token & "'" '' admin_right get the user_right token
Print
Dim ByRef As user_right ur = ar '' Create a user_right type reference 'ur' to the 'ar' instance of admin_right type
Print "'" & ur.token & "'" '' user_right get its token
'ur.token = "fxm0" '' Error: Illegal member access, USER_RIGHT.TOKEN.property.set (user_right cannot set its token)
'Dim As user_right ur1 '' Error: The default constructor has no public access
'Dim As user_right ur2 = ar '' Error: Constructor has no public access
SleepCategory: User Defined Types
Kind: type
Reproduced from the FreeBASIC Wiki Manual under the GNU Free Documentation License 1.3 — with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. Copyright © the FreeBASIC project and wiki contributors. See License.
tiko-lang · Home · Feature Index · Keyword Index · License
FreeBASIC manual pages reproduced under the GNU FDL 1.3.
- Generics
- Interfaces
- For Each
- Iterators
- Tuples
- Array Results
- Defer
- Lambdas
- Block Strings
- Partial Types
- String Slices
- Embed
- Typed Variadics
- C Header Import
- Foreign Library Linking
- UString
- Fixed-Width Types
- Nullptr
- String Library
- Format
- Array
- Map
- Set
- LinkedList
- OrderedMap
- OrderedSet
- Sorting
- Optional
- Result
- Smart Pointers
- Date and Time (Chrono)
- Filesystem
- File Streams
- Config (INI and TOML)
- Codec
- Hash
- UUID
- OS
- Process
- Net
- HTTP and TLS
- Math Library
- Finance
- Logging
- Terminal TUI Library
- PsControls
- tkControls
- sys/win
- Goroutines and Channels
- LLVM Backend
- tiko build
- TIKO_COMPILER
- Variable Declarations
- Standard Data Types
- User Defined Types
- Procedures
- Operators
- Control Flow Statements
- Converting Data Types
- Array Functions
- String Functions
- Mathematical Functions
- Bit Manipulation
- Date and Time Functions
- File I/O Functions
- Console Functions
- User Input (Runtime Library)
- User Input Functions (Graphics Library)
- Screen Functions
- 2D Drawing Functions
- Graphics Library Reference
- Graphics Keyword List
- Memory Functions
- Threading Support Functions
- Error Handling Functions
- Operating System Functions
- Preprocessor
- Intrinsic Defines
- Miscellaneous Keywords
- Modularizing