トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Javaの文法:パッケージとアクセス制御

パッケージ

 パッケージ化する目的

同一クラス名があってもパッケージを用いることで、パッケージ名+クラス名という形ではユニークなものとすることができる(例えば、java.util.Dateとjava.sql.Date)。この形(パッケージ名+クラス名)を完全限定名と呼ぶ場合もある。

 package文

自分でパッケージを作成する場合にはpackage文を用いる。

デフォルトパッケージ

package文がないclassファイルはデフォルトパッケージに属することになる。

 import文

  • あるクラスで別パッケージのクラスを参照するさいに、完全限定名、つまりパッケージ名とクラス名を合わせた形式で参照することが可能であるが、あまりに長すぎるパッケージ名を何度も入力するのは煩雑であるため、import文に該当クラスを指定することで、パッケージ名を省略することが可能となる。
  • eclipseなどの開発環境では、別パッケージのクラスを用いた時点で、import文を自動的に入力してくれるものが多い。

 パッケージ階層

  • パッケージはファイルシステム上ではフォルダで表現されており、複数階層のパッケージが合った場合にはサブフォルダで表現される。パッケージ階層間は"."で区切られる。

 Eclipseにおけるimport

  • 開発環境であるEclipseではクラスパスの通ったライブラリ中のクラスに対するimport文はそのクラスを最初に用いるさいに自動的に挿入される
  • コピー&ペーストしたさいにimport文がなかった、あるいは、あるクラスに対する命令文を削除したさいにそのクラスへの参照が無くなった場合に、Shift+Ctrl+Oを押すことで、import文を自動的に最適化してくれる。

アクセス制御

 アクセス制御のための修飾子

public、protected、private

  • publicは他のパッケージにも公開するが、privateは自クラスあるいは内部クラス、無名クラスからしかアクセスできない。

 アクセス制御のまとめの表

以下の表で○はアクセス可能を示す。

同一クラス 同一パッケージ サブクラス 別パッケージ
public
protected ×
修飾子なし × ×
private × × ×

 setter,getterメソッド

  • Javaの基本的な修飾子だけでは、クラスの属性へのアクセス制御がきちんと行えないため(読み取りのみ可能な属性、書き込みのみ可能な属性を作成できない)、考え出された工夫である。Beansなどで用いられるため、Java言語を用いるさいの基本的な約束事になっている。
  • 具体的には、ある属性があったときに、属性そのものへはprivateとし、その名前の前にgetをつけて参照メソッド、setをつけて設定メソッドを追加する。
    • 読み取りのみの属性はgetメソッドのみを実装し、書き込みのみの属性はsetメソッドのみを実装する。
    • 普通の属性はsetメソッドもgetメソッドも実装する。

 外部パッケージの利用

  • 外部パッケージを利用する場合には外部パッケージAPIにおけるpublicメソッドを用いることになる。

最終更新時間:2008年06月04日 19時54分31秒