Access Modifiers
Morph uses public and private to control visibility of methods and fields.
public
Members marked public are accessible from outside the class:
Player class {
GetName public method() as string {
return "Player One";
}
}
// External code
p is Player();
Print(p.GetName()); // ✅ accessible
private
Members marked private are only accessible within the class:
Counter class {
count is 0 as int;
Increment private method() {
count is count + 1;
}
GetCount public method() as int {
Increment(); // ✅ internal access OK
return count;
}
}
c is Counter();
c.GetCount(); // ✅ public
c.Increment(); // ❌ compile error — private
On Fields
Fields can also have visibility modifiers:
Player class {
name is "" as string; // default visibility
health public is 100 as int; // explicitly public
secret private is "" as string; // explicitly private
}
When require_class_explicit_visibility = true in .morphsettings, all members must have an explicit modifier.
Placement
The modifier goes before the method keyword or the field name:
// Method
Run public method() { }
// Class
Player public class { }