Virtual, Override, and Overload
These three modifiers enable polymorphism in Morph.
virtual
A virtual method can be overridden by subclasses:
BaseClass class {
virtual Negate method(a as int) as int {
return 0 - a;
}
}
override
Marks a method as replacing a virtual or abstract method from a parent class:
DerivedClass class inherits BaseClass {
override Negate method(a as int) as int {
return -1 * a;
}
}
overload
Creates multiple methods with the same name but different parameter signatures:
Calculator class {
overload Add method(a as int, b as int) as int {
return a + b;
}
overload Add method(a as float, b as float) as float {
return a + b;
}
}
Real Example
From VirtualOverrideOverload.mx:
VirtualOverrideOverload class {
overload Add method(a as int, b as int) as int {
return a + b;
}
virtual Negate method(a as int) as int {
return 0 - a;
}
override Normalize method(a as int) as int {
return a;
}
}
Summary
| Modifier | Purpose |
|---|---|
virtual | Method can be overridden by subclasses |
override | Replaces a virtual/abstract method |
overload | Same name, different parameter types |
Next Steps
- Structs — Value-type classes
- Interfaces — Contracts