All Products
Search
Document Center

Classes and objects

Last Updated: Sep 09, 2021

Overview

Cava allows you to define classes and create objects. This language supports the following concepts that are used in object-oriented programming:

  • Encapsulation

  • Abstraction

  • Class

  • Object

  • Instance

  • Method

In terms of object-oriented programming, the syntax of Cava is similar to that of Java or C#.

Example

In the following sample code, a class named Example is defined, an object named example is created by using the handler function, and a member variable named PI of the object is to be accessed:

class Example {  // <==
    double PI;
    Example() {
        PI = 3.1415926;
    }
    static int main() {
        Example example = new Example(); 
        double a = example.PI; // The value of a is 3.1415926.
        return 0;
    }
}

Features

Define a class

To define a class, you must use the class keyword. The defining of a class involves the following operations:

  • Define a member variable: A member variable carries the data of the relevant object.

  • Define a constructor: A constructor is used to initialize a created object.

  • Define a member function: A member function is a method to access the relevant object.

  • Define a class function: A class function is shared by all objects and can be accessed by using the class name.

class Example {        // Define a class named Example.
    public double PI;  // Define a member variable.
    Example() {        // Define a constructor.
        PI = 3.1415926;
    }
    double getPI() {   // Define a member function.
        return PI;
    }
    static int main() {
        Example example = new Example();
        double a = example.getPI(); // The value of a is 3.1415926.
        return 0;
    }
}

Create an object

After you define a class, you can use the class to create an object. The creation of an object involves the following operations:

  • Declaration: Declare a variable and specify the class of the variable.

  • Instantiation: Use the new keyword to create an instance of an object.

  • Initialization: Specify a constructor next to the new keyword. The constructor is used to initialize the object.

The following sample code provides an example on how to create an object. The first line of the main function is used to create an object of the Example class and store the object in the example variable. After the object is created, you can use the example variable to access the data members of the object.

class Example {
    double PI;
    Example() {
        PI = 3.1415926;
    }
    static int main() {
        Example example = new Example(); 
        return 0;
    }
}

Define a member variable

The following sample code provides an example on how to define a member variable named PI of the DOUBLE type:

class Example {
    double PI; // <==
    Example() {
        PI = 3.1415926;
    }
}

Note: When you define a member variable, you cannot specify an initial value for the variable. You must use a constructor to initialize a member variable. For more information, see Define a constructor.

class Example {
    double PI = 3.1415926; // When you define a member variable, you cannot initialize the variable.
}

Define a constructor

A constructor is a special member function in Cava. The following limits are imposed on constructors:

  • The name and class name of a constructor must be the same.

  • A constructor does not have a return value. You cannot specify the output parameters.

A constructor is automatically called after the relevant object is created. The commands in the constructor are run to initialize the object. Cava allows you to define multiple constructors. The specified syntax of the new command determines the constructor that is used to create and initialize an object. The following sample code provides an example on how to create two objects by using the main handler function. The first object is initialized by using Constructor A. After the initialization, the value of the PI member variable is 3.1415926. The second object is initialized by using Constructor B. After the initialization, the value of the PI member variable is 3.14.

class Example {
    public double PI;
    Example() { // <== A
        this.PI = 3.1415926;
    }
    Example(double customPI) { // <== B
        this.PI = customPI;
    }
    double getPI() {
        return PI;
    }
    static int main() {
        Example example1 = new Example(); // Use Constructor A to initialize the created object.
        double a = example1.getPI();
        Example example2 = new Example(3.14); // Use Constructor B to initialize the created object.
        double b = example2.getPI()
        return 0;
    }
}

Note: Constructors support function overloading.

Define a member function

A member function encapsulates the operations related to member variables. A consumer of an object can call a member function to read and modify the relevant member variable. The member variable defined in a member function can be accessed by using the member function. If a variable in the scope of the member function shares the same name with the member variable, the variable in the scope takes precedence when you access variables by specifying the variable name. In this case, you can add the this prefix to the variable name to access the member variable.

class Example {
    public double PI;
    Example() {
        this.PI = 3.1415926;
    }
    void getPI() {
        return PI;
    }
    static int main() {
        Example example = new Example();
        double a = example.getPI();
        return 0;
    }
}

Note: Member functions support function overloading. You can define multiple member functions with the same name in a class. The compiler chooses an optimal function based on the type and number of input parameters that are specified in the code.

Define a class function

A class function belongs to the relevant class and is shared by all the data members of the class. You can use the static keyword to define a class function for a class. Then, you can use the class to access the class function without the need to create an object. However, you must use an object to access a member function.

class Example {
    static double getPI() { // <==
        return 3.1415926;
    };
    static int main() {
        double a = Example.getPI();
        return 0;
    }
}

Inheritance and polymorphism

Cava does not support class inheritance.