JavaとActionScriptの文法上の相違点メモ
参考:O'Reilly Japan - 詳説 ActionScript 3.0
(以下、ActionScript を AS と表記する。)
- ASのソースコードは package{..} ブロック内に書く。
- 以下のようにパッケージ名を記述することもできる。
- package packagename{..}
- ただし、メインクラスは無名パッケージでなければならない。
- (FlashBuilder, mxmlc を使う場合)
- 以下のようにパッケージ名を記述することもできる。
- ASでパッケージプライベートなアクセス制御を指定するときは "internal" と書く。
- あるいはアクセス制御指定子の記述を省略する (Javaといっしょ)。
- ASは変数の宣言時に、型名をなんでも "var" と書く。
- ただし、以下のような型注釈が書ける(極力書くようにするべき)。
- var intVar:int = 0;
- var stringVar:String = "Hello";
- 同様に、メソッドは "function" で定義する。
- コンストラクタも "function" で定義する。
- ただし、以下のような型注釈が書ける(極力書くようにするべき)。
- ASには「バインドメソッド」がある。
- バインドメソッド:変数に代入されたり、他のメソッドに渡したり返されたりするメソッド。
- var funcB = foo.funcA;
- funcB(300); // ←foo.funcA(300)が呼ばれる
- 便利だけど可読性悪そう。慣れ?
- バインドメソッド:変数に代入されたり、他のメソッドに渡したり返されたりするメソッド。
- ASはメソッド内にメソッドが書ける。
- というか、Java よりいろいろ柔軟に書けそう。
- ASには「抽象メソッド」がない。
- ASはメソッド(コンストラクタ)のオーバーロードができない。
- オーバーライドはできる。ただし override と記述する必要あり。
- ASは null の他に undefined という値がある
- ASにはジェネリック的なものはなさそう?
- ASのキャストの書き方は、「型 ( キャストしたい式 )」
- ASには is 演算子がある
- if(fruit is Apple) {..}
- 型チェックはしっかりやろう。
- if(fruit is Apple) {..}
- ASには as 演算子がある。
- ASの配列は、すべてArray型でまかなう。
- var array:Array = [ [0, "hoge"], [3.55, "piyo", true] ];
- 型とか大きさとかも超自由。
- var array:Array = [ [0, "hoge"], [3.55, "piyo", true] ];