JavaとActionScriptの文法上の相違点メモ

参考:O'Reilly Japan - 詳説 ActionScript 3.0
(以下、ActionScriptAS と表記する。)

  • 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のキャストの書き方は、「型 ( キャストしたい式 )
    • 例:Apple(fruit).hasWarm()
      • fruit を Apple 型にキャストして hasWarm() メソッドを呼び出し
  • ASには is 演算子がある
    • if(fruit is Apple) {..}
      • 型チェックはしっかりやろう。
  • ASには as 演算子がある。
    • (fruit as Apple).hasWarm()
      • fruit を Apple 型にキャストして hasWarm() メソッドを呼び出し
  • ASの配列は、すべてArray型でまかなう。
    • var array:Array = [ [0, "hoge"], [3.55, "piyo", true] ];
      • 型とか大きさとかも超自由。