Class Statement

Declares the name of a class and defines its implementation.


[ Abstract ] Class name [ < typeList > ] [ Is superclass ] [ Does trait ]...
    [ Where genericConstraints ] ...
    [ statements ]
End Class


Optional — Specifies that this is an abstract class, and is ordinarily used as the parent of a concrete class.
Required — An identifier that names the class.
Optional — One or more identifiers separated by commas and surrounded by angle brackets (< >).
Optional — The name of another class from which this class inherits methods and properties.
Optional, repeatable — Specifies which traits a class implements.
The name of a trait, a way to define behavior. See Does Clause (Traits) for more information.
Optional, repeatable — Specifies constraints to place on type arguments. Requires a typeList. You can place one at the end of the first line. Or you can place one or more on separate lines before any statements.
One or more constraints on a generic parameter separated by commas. See Where Clause (Generics) for details.
Optional — The statements that define the members of the class.
End Class
Terminates the Class block.


A Class statement defines a data type known as a class. Classes are fundamental building blocks in object-oriented programming (OOP). See Objects and Classes for more information.

You can place a Class only within certain contexts. These contexts include Program and Library modules, other classes, and Object and Trait declarations. You cannot place a class within a procedure. See Declaration Contexts and Default Access Levels for more information.


Listing 1
Program ClassExample
Require IO #io

Class Person
    Dim myName As String, myAge As UShort
    Constructor name As String, age As UShort
        myName = name
        myAge = age
    End Constructor
    Method GetName As String
        Return myName
    End Method
    Method GetAge As UShort
        Return myAge
    End Method
End Class

Person #a, "Alice", 24
Person #b, "Bob", 42

#io.WriteLine #a.GetName & " is " & #a.GetAge
#io.WriteLine #b.GetName & " is " & #b.GetAge


' Output:
' Alice is 24
' Bob is 42

See also