Class Statement
Declares the name of a class and gives its implementation.
Syntax
[ modifier ] _
Class class_name [ type_list ] [ Is base_class ] [ Does trait_list ]
    [ Where generic_constraints ]…
    [ statements ]
End [ Class ]
Parts
modifier- Optional one of these:
	
@Abstract– The class can only be the base class (base_class) of other classes. See@Abstract.@Deprecated– The class can be removed in a subsequent version. See@Deprecated.@Open– The class can be the base class (base_class) of other classes. See@Open.
 class_name- Mandatory name for the class.
 type_list- Optional one or more type parameters, with a comma between each, all between brackets (
[ ]). See Type List for more information. Is- A keyword before 
base_class. - You can also use one of the non-reserved keywords 
ExtendsorInheritsas an alternative. base_class- Optional name of a class that supplies its public elements (typically methods and properties) to this class.
 trait_list- Mandatory after 
Does, one or more traits, with a comma between each. See Does Clause (Traits) for more information. Where- Optional keyword you can use again and again. You can put one at the end of the initial line, or one or more on different lines.
 generic_constraints- One or more limits (or constraints) on a generic parameter, with a comma between each. See Where Clause (Generics) for more information.
 statements- Optional statements that are the members of the class.
 End- Completes the statement.
You can also use 
End Class. - You can change the syntax of this part. See @Option Directive for more information.
 
Instructions
Class is a statement that makes a data type known as a class.
Classes are important constructs in object-oriented programming (OOP).
See Objects and Classes for more information.
You can put a class only in some contexts.
These contexts include modules (Program and Library), other classes, and the constructs Object and Trait.
You cannot put a class in a procedure.
See Declaration Contexts and Default Access Levels for more information.
Permitted members
Changes in syntax with @Option
There are two areas where you can change the syntax of the statement:
@Option Type Extends,@Option Type Inherits,@Option Type Is@Option End Blockand@Option End
See @Option Directive for more information.
Examples
Example 1
Require ViviFire.IO
Class Person
    // Private members.
    Constructor Var my_name As String
        // Validate here.
    End Constructor
    // Public members.
    Method SayHello
        PrintLine $"Hello, I'm {my_name}!"
    End Method
End Class
New Person a, "Alice"
New Person b, "Bob"
a.SayHello
b.SayHello
Output:
Hello, I'm Alice! Hello, I'm Bob!