Классы

Если вы уже занимались объектно ориентированным программированием, то со структурой классов уже наверняка знакомы. В haXe она создаётся следующим образом:

    package my.pack;
    /*
        так создаётся определение класса my.pack.MyClass
    */

    class MyClass {
        // ....
    }
</div>

У Класса может быть несколько переменных и методов.

    package my.pack;

    class MyClass {

        var id : Int;

        static var name : String = "MyString";

        function foo() : Void {
        }

        static function bar( s : String, v : Bool ) : Void {
        }
    }
</div>

Переменные и методы могут иметь следующие флаги :

* static : поле принадлежит самому Классу, а не его экземплярам (объектам). Статические идентификаторы могут использоваться напрямую в самом классе. Вне класса, они должны быть использованы с именем, класса, которому принадлежат (например : my.pack.MyClass.name).
* public : поле открыто для доступа из других классов. По умолчанию, все поля - private.
* private : доступ к полю разрешён только из самого класса и из классов, которые от него наследуют.

Все переменные класса должны быть типизированными, т.е. объявлены с типом (можно использовать тип Dynamic если неизвестно, какой тип следует использовать или хочется писать в стиле языков с динамической типизацией).
Аргументы функций и возвращаемые значения необязательны, но их типы также строго проверяются, как мы увидим позже во введении в выявление типов.

Статические переменные могут получать значение при объявлении, но это не обязательно.

===== Конструктор класса =====

У класса может быть только один конструктор, представляющий из себя нестатическую функцию с именем new. Это ключевое слово, которое также может быть использовано для названия функции класса.

    class Point {
        public var x : Int;
        public var y : Int;

        public function new() {
            this.x = 0;
            this.y = 0;
        }

    }
</div>