渲染zh-Hans

abstractus

Translation status: 简体中文 reader-locale proof. Code fences render through the zh-Hans pipeline; prose is canonical Latin.

Marks a type or member as abstract.

Syntax: abstractus genus <name> <block>

Category#

type

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