abstractus
Translation status: ภาษาไทย reader-locale proof. Code fences render through the th-TH pipeline; prose is canonical Latin.
Marks a type or member as abstract.
Syntax: abstractus genus <name> <block>
Category#
type
Related#
Examples#
radix/corpus/abstractus/abstractus.fab (canonical · keyword)#
Marks a type or member as abstract.
# =============================================================================
# abstractus — Marks a type or member as abstract.
# =============================================================================
#
# What this teaches:
# • Abstract type declaration — `abstractus genus` defines a type that
# requires concrete subtypes to provide member implementations
# • Inheritance and override — concrete genera extend abstract ones and
# supply their own `functio` bodies
#
# Common mistakes:
# • forgetting to provide concrete `functio` implementations for abstract methods declared in `abstractus genus`
#
# See also: genus, implendum
# =============================================================================
# abstractus — abstract genus contract marker
#
# abstractus genus Nomen { … }
#
# GRAMMAR:
# genusDecl :← 'abstractus'? 'genus' ident '{' ... '}'
#
# EXPECTED OUTPUT:
# rota, 16
abstract class Figura {
string nomen
fn titulus() → string {
return "§"(self.nomen)
}
}
class Circulus {
string nomen
int radius = 1
fn area() → int {
return self.radius * self.radius
}
}
main {
const _ c ← Circulus { nomen = "rota", radius = 4 }
print c.nomen
print c.area()
}Expected output:
rota
16