Skip to main content

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

ModifierPurpose
virtualMethod can be overridden by subclasses
overrideReplaces a virtual/abstract method
overloadSame name, different parameter types

Next Steps