「詳説 ActionScript3.0」のasファイルのルールみたいなところを読んでいるんだけど、以前から引っかかっているところがある。
ひとつのasファイルに複数のクラスを書けるかどうかということ。

「詳説 ActionScript3.0」のコンパイラ制限に
「外部から見える定義」をひとつだけ持っていなければならない、というのがあって、これはファイルに「最低ひとつはなくてはいけない」と「ひとつだけじゃないといけない」の両方の意味。
「外部から見える定義」というのはアクセス制限をpublicかinternalにしたものの意。

で、例として以下のものがある。

package {
 public class A {
 }
 public class B {
 }
}

この例はpublicのクラスが複数あるからダメ(「外部から見える定義」はひとつだけ制限)、という例で使われているんだけど、それならば片方がpublicでなければ複数書いても良いとも取れる。
こういった例の用い方は賢くないよね。

で、調べてみるとひとつのファイルに複数のクラスを書くことはできるが、ひとつのパッケージには1つしか書けないというのが分かった。
ここに詳しくまとめてくださっている。
http://d.hatena.ne.jp/nitoyon/20070116/p1

1つのファイルに複数のクラスは記述できるが、パッケージ(package)内には1つだけであり、パッケージ外に記述したクラスは同じファイルのクラスからしかアクセスできない。
(関数も同じ)

重要なキーワードとして、もうひとつ理解した。
「パッケージに入れないと外からは見えない」