プログラミング応用a 第10回 『モジュール化その2 (パッケージ化とインポート、パッケージレベルでのアクセス制御)』 |
10-2 【package宣言(クラスをパッケージへ編入する方法)】
●あるクラスを特定のパッケージに編入したい場合は,ソースファイルの先頭でアクセス修飾子 package をつけて宣言を行う(下図)。
10-3 【import宣言(別のパッケージ内のクラスを使う)】
あるクラスから別のクラスを利用する場合,同一パッケージ内のクラスは特別に何もしなくても使用することが出来る。
しかし,別のパッケージ内のクラスを使うには,ソースファイルの先頭で import 宣言を行わなくてはならない(下図)。
(なお,インポートとは,「輸入する」「外から内へ持ってくる」という意味の単語である)
※なお,デフォルトパッケージ内のクラスは,その他のパッケージからはインポートできない。
デフォルトパッケージには名前がないので,import宣言で指定のしようが無いためである。
10-4 【パッケージとクラスのアクセス指定】
●あるパッケージのクラスを他のパッケージからも利用可能にするためには, クラス定義で public と指定してクラスを定義しなくてはならない。
(下図をクリックすると補助情報が表示されます)
表にまとめると次の様になる。
指定無しクラス | publicクラス | |
同一パッケージ内のクラスから | ○ | ○ |
別のパッケージ内のクラスから | × | ○ |
※つまり,publicクラスへはどこからでもアクセスできる
10-5 【パッケージとメンバのアクセス指定】
● メンバのアクセス特性を指定するとき, private 指定の他に,「指定無し」があったが,新たに「public指定」を紹介する。
privateメンバ | 指定無し(デフォルトアクセス)メンバ | publicメンバ | |
同一クラス内から | ○ | ○ | ○ |
同一パッケージ内のクラスから | × | ○ | ○ |
別のパッケージ内のクラスから | × | × | ○ |
※その他にprotectedというメンバアクセス指定があるがここでは省略する
※つまり,publicメンバはどこからでもアクセスできる
●図で見るprivateメンバ/デフォルトアクセスメンバ/publicメンバ
※つまり, public クラス(厳密には,publicクラスのpublicメンバ)はパッケージのインタフェイス部を構成する。
※それ以外(publicでないクラス,publicクラスのpublic以外のメンバ )は,パッケージの実装部を構成する。
次へ進む