Essential ActionScript 3.0 読書メモ 第5回 package外のクラスへのアクセス

まず、正式なクラス名と非正式なクラス名のおさらい。

正式なクラス名:packageName.ClassName
非正式なクラス名:ClassName

同一package内であれば、クラス名が正式なものでなくても、アクセスは可能である。

しかし、別packageからpublicクラスにアクセスする際は、クラス名は正式なものでなければならない

別packageのpublicクラスにアクセスするには、importディレクティブを使う。
例:

import packageName.ClassName;

いったんimportが済めば、その後は非正式なクラス名でも利用することができる。例えば、組み込みクラスのflash.media.Soundを利用する場合、

import flash.media.Sound
new Sound

といった具合。

クラスをpackageの階層でimportしておけば、そのpackage内のどこでもそのクラスを利用できる(クラス内でimportすれば、そのクラスの中でのみ利用できる)。
例:

package jp.livedoor {
  import flash.media.Sound

  public class Blog {
    public function Blog () {
      new Sound
    }
  }
}

importの結果、同一package内に同一の名前をもつクラスが重複してしまった場合、正式なクラス名を使う必要が生じる。
例:

new flash.media.Sound
new jp.livedoor.Sound

クラス名が重複している際に非正式なクラス名を用いると、コンパイルエラーが発生する。

他のpackageの全てのpublicクラスにアクセスするには、

import packageName.*

と書く。

名前の無いpackage内に書いたクラスは、「無名パッケージ(unnamed package)」という自動的に生成されるpackage内に配置される。無名パッケージ内のクラスは、importなしで利用できる。
例:

package {
  // ここで定義されたクラスは無名パッケージに配置され、プログラムのどこからでも直接利用できる
}

しかし、ベストプラクティスとしては、無名パッケージ内にクラスを定義することは避けるべきとされる。なぜなら、無名パッケージ内のクラス名が他のクラスと重複する恐れがあるからである。

今日の進捗(第4回+第5回):178→193/4343

コメントをどうぞ

コメントを残す