Haxeでは読み込み専用の変数、書き込み専用の変数を簡単に設定することができます。
読み込み専用
Main.hx
class Main {
	//読み込み時はどこからでも出来ますが、書き込みはMainからのみになります。
	static public var readOnly(default, null):Int;
	
	static function main() {
		var i = Main.readOnly;		//ok
		Main.readOnly = 1; 			//ok
		
		Test1.test();
	}
}
class Test1 {
	static public function test() {
		var i = Main.readOnly;		//ok
		Main.readOnly = 1; 			//error
	}
}
書きこみ専用
Main.hx
class Main {
	//書き込みはどこからでも出来ますが、読み込みはMainからのみになります。
	static public var writeOnly(null, default):Int;
	
	static function main() {
		var i = Main.writeOnly;		//ok
		Main.writeOnly = 1; 		//ok
		
		Test1.test();
	}
}
class Test1 {
	static public function test() {
		var i = Main.writeOnly;		//error
		Main.writeOnly = 1; 		//ok
	}
}
いちいちsetter,getterを書かなくていいので、楽ですね。
もちろん、setter,getterを書くこともできます。
getter,setter(プロパティ)
Haxe3:
Main.hx
class Main {   
	static public var x(get,set):Int;
	static public var y(get, never):Int;
	static public var z(default, set):Int;	
	
	static function get_x():Int		 	{ 
		trace( "get_x" );
		return x;		//setter内ではget_xは呼ばれない。
	}
	static function set_x(v:Int):Int {
		trace( "set_x" );
		return x = v;	//setter内ではget_x,set_xは呼ばれない。
	}
	
	static function get_y():Int			{ 
		trace( "get_y" );
		return 1; 
	}
	static function set_z(v:Int):Int	{ 
		trace( "set_z" );
		return z = v; 	//setter内ではset_zは呼ばれない。
	}
	
	static function main() {
		var i:Int;
		i = x;	//get_x
		x = 1;	//set_x
		i = y;	//get_y
		y = 1;	//error
		i = z;	//i = z;
		z = 1;	//set_z
	}
}
Haxe2:
Main.hx
class Main {   
	static public var x(getX,setX):Int;
	static public var y(getY, never):Int;
	static public var z(default, setZ):Int;	
	
	static function getX():Int		 	{ 
		trace( "getX" );
		return x;		//setter内ではgetXは呼ばれない。
	}
	static function setX(v:Int):Int {
		trace( "setX" );
		return x = v;	//setter内ではgetX,setXは呼ばれない。
	}
	
	static function getY():Int			{ 
		trace( "getY" );
		return 1; 
	}
	static function setZ(v:Int):Int	{ 
		trace( "setZ" );
		return z = v; 	//setter内ではsetZは呼ばれない。
	}
	
	static function main() {
		var i:Int;
		i = x;	//getX
		x = 1;	//setX
		i = y;	//getY
		y = 1;	//error
		i = z;	//i = z;
		z = 1;	//setZ
	}
}