Access Specifiers
Unlike any other class module or system on Roblox, Class++ comes with an Access Specifier system, like in C++, it provides you a way to modify the access control of a member. There are currently 4 access specifiers in Class++: Public
, Private
, Protected
, and Friend
.
(You will learn about Protected
and Friend
later.)
Public Access Specifier
Like you have seen in the examples on the previous pages, a Public access specifier allows anyone to access a member. Whether it be from a function inside the class or from the script's main thread, the member is accessible and can be modified.
local class = ClassPP.class
local Car = class "Car" {
Public = {
Brand = "Lamborghini",
}
}
local newCar = Car.new()
newCar.Brand = "Tesla"
In this example, we created a new class with a Public member Brand
that has the default value of Lamborghini
.
Then we created a new object from this class and modified the Brand
member of this object. Now the value is set to Tesla
.
Private Access Specifier
Private access specifier allows you to hide a member from anyone outside from that class. No one besides the class members can access this member or modify it.
local class = ClassPP.class
local Car = class "Car" {
Public = {
Brand = "Lamborghini",
},
Private = {
License_Plate = "XXXX"
}
}
local newCar = Car.new()
newCar.License_Plate = "YYYY" -- This will error!
In this example, we updated the previous class with a private member named License_Plate
, this member is private and can only be accessed by the class members, so trying to access or modify it outside of the class will cause an error.
Warning
A member (property/attribute) can be declared only once. This means a member can only be defined under one access specifier. Attempting to declare another member with the same name on a different access specifier will error.