Классы

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

    class MyClass {
        // ....
    }
У Класса может быть несколько переменных и методов.
    package my.pack;

    class MyClass {

        var id : Int;

        static var name : String = "MyString";

        function foo() : Void {
        }

        static function bar( s : String, v : Bool ) : Void {
        }
    }
Переменные и методы могут иметь следующие флаги :
  • 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;
        }

    }