Haxe Code Cookbook
Haxe programming cookbookBeginnerDeclare classes

Declare classes

Create a new class with two functions and create a new instance of it.

class Calculator {
  public function new() {
    trace("A new calculator instance was created!");
  public function add(a:Int, b:Int): Int {
    return a + b;
  public function multiply(a:Int, b:Int):Int {
    return a * b;

// Create a new instance of the Calculator
var calculator = new Calculator();

trace(calculator.add(1, 2));
trace(calculator.multiply(2, 3));

See https://haxe.org/manual/types-class-instance.html

Declare a class with inheritance

Create a parent class and create another one which "inherits" it.

class Animal {
  public function new() { }
  public function sayHello() {

class Dog extends Animal {
  public function new() {

// Create a new Dog instance
var myDog = new Dog();

// We can also access its parent's methods

See https://haxe.org/manual/types-class-inheritance.html

Declare a class with fields

Declare a new class with its own fields, create a new instance and also be able to access and hide its properties.

class User {
  public var name:String;
  private var age:Int;
  public function new(name:String, age:Int) {
    this.name = name;
    this.age = age;

// Create a new User instance
var user = new User("Mark", 31);

// We can also access it's public variables

// But we cannot access it's private variables
trace(user.age); // Error; 

See https://haxe.org/manual/class-field.html

Declare a generic class

Declare a new class with its own fields, create a new instance and also be able to access and hide its properties.

class Value<T> {
  public var value:T;
  public function new(value:T) {
    this.value = value;

// Create a new Value Int instance
var myIntValue = new Value<Int>(5);

// Create a new Value String instance
var myStringValue = new Value<String>("String");

See https://haxe.org/manual/type-system-generic.html

Declare an inline constructor

Declare a new class with an inline constructor (new() function), create a new instance and reveal its effect.

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

  public inline function new(x, y) {
    this.x = x;
    this.y = y;

// Create a new Value Int instance
var myPoint = new Point(100, 150);

In JavaScript, this will be compiled (where possible) as:

var myPoint_x = 100;
var myPoint_y = 150;

See https://haxe.org/manual/lf-inline-constructor.html

Mark Knol
Last modified:
Category:  Beginner