Part 09 - Methods
A function exclusively associated with a
Defining a Method
Methods must be defined in
classes. They are declared just like functions are.
cat = Cat()
An object of
Cat must be instanced, then its methods can be called.
Names of methods should always be verbs.
They should also be declared in PascalCase.
Class Constructor and Destructor
|Class Constructor and Destructor|
Constructors and Destructors are special methods that are called on when a
class is being instanced or destroyed, respectively.
Both are optional.
_name = 'Whiskers'
print "$_name is no more... RIP"
_name as string
cat = Cat()
Whiskers is no more... RIP
If a constructor has arguments, then they must be supplied when instancing. Destructors cannot have arguments.
def constructor(name as string):
_name = name
_name as string
cat = Cat("Buttons")
Do not depend on the destructor to always be called.
All these modifiers also apply to properties (If they are explicitly declared).
static can also apply to fields.
_currentId += 1
_id = _currentId
_id as int
static _currentId = 0
This will cause the
Id to increase whenever an
Animal is instanced, giving each
Animal their own, unique
All the methods defined in an
interface are automatically declared abstract.
Abstract methods in a
class must have a blank code block in its declaration.
abstract def Eat():
Both declare roughly the same thing.
Member is fully accessible to all types.
Member is only visible to this class and inheriting classes.
Member is only visible to this class.
All fields are by default
protected. All methods, properties, and events are by default
Fields are typically either
private. Usually instead of making a public field, you might make a public property that wraps access to the field instead. This allows subclasses to possibly override behavior.
Methods can have any visibility.
Properties can have any visibility, and typically have both a getter and a setter, or only a getter. Instead of a set only property, consider using a method instead (like "SetSomeValue(val as int)").
It is recommended you prefix field names with an underscore if it is a private field.
Declaring Properties in the Constructor
|Declaring Properties in the Constructor|
One very nice feature that boo offers is being able to declare the values of properties while they are being instanced.
_value as object
box = Box(Value: 42)
The constructor didn't take any arguments, yet the
Value: 42 bit declared Value to be 42, all in a tighly compact, but highly readable space.
- Create two
Prey. To the
Predator class, add an
Eat method that eats the
Prey. Do not let the
Prey be eaten twice.
Go on to Part 10 - Polymorphism, or Inherited Methods