Object-Oriented Programming
Project Links: GitHub
Overview
MaìLang supports full OOP including classes, inheritance, traits, and polymorphism.
Classes
Basic Class
class Animal {
let name: str
let age: int
fn init(name: str, age: int) {
this.name = name
this.age = age
}
fn speak() -> str {
return "{this.name} speaks"
}
}
let cat = Animal("Kitty", 3)
println(cat.speak()) // Kitty speaksInheritance
class Dog extends Animal {
let breed: str
fn init(name: str, age: int, breed: str) {
super(name, age)
this.breed = breed
}
override fn speak() -> str {
return "{this.name} barks!"
}
}
let dog = Dog("Rex", 3, "Labrador")
println(dog.speak()) // Rex barks!Traits
trait Printable {
fn to_string() -> str
fn print() {
println(this.to_string())
}
}
class Point implements Printable {
let x: float
let y: float
fn to_string() -> str {
return "({this.x}, {this.y})"
}
}
let p = Point(3.0, 4.0)
p.print() // (3, 4)Next Steps
- Standard Library - Built-in modules
- FFI - Language integration