JAVA_Package
Javaの名前空間の仕組みの1つにパッケージがあります。大規模開発では必須の概念です。また、他人の作ったコードの再利用という観点でも、パッケージを正しく活用する必要があります。
・完全修飾名:パッケージ名まで含めたクラスやインターフェースの呼び名
・単純名:パッケージ名を除いたStringの部分(クラス名)
パッケージで実現できることは
・名前空間
・意味的なまとまりの管理(クラスの設計同様、パッケージの設計も責務の分割が目的)
・アクセス制御(Javaのデフォルトアクセス制御は、パッケージ内からしかアクセスできない制御)
パッケージ名にインターネットドメイン名(DNSドメイン名)を推奨する。(DNSやURLと逆順)
習慣として、型名は大文字で始まる名前、パッケージ名は全て小文字にします。
パッケージの宣言はファイルの先頭に「package packageの完全修飾名;」を書く(相対パスのような表記はない)
クラス名とインターフェース名がファイル名に制約をつけるように、パッケージ名はディレクトリ名に制約をつけます。(必須ではない)
java.langパッケージは暗黙にインポートする。
単純名を書いた時の名前解決の順序は、
・そのファイル内で定義する型名
・単一型インポートした型名
・同じパッケージ内の型名
・オンデマンドインポートした型名
曖昧さが発生する場合、面倒でも完全修飾名で型名を書くことを進めます。
単純名の衝突を防ぐ指針は、
・標準ライブラリの型名と同名は避ける
・オンデマンドインポート(「*」を使ったインポート)をなるべく避ける
staticインポートはパッケージ内のクラス及びインターフェースのstaticメンバ名をインポートします。(慎重に)
クラスとインターフェースは、public修飾子を
・付けている場合、publicスコープ
・付けていない場合、パッケージスコープ
インターフェースだけをパッケージの外にさらして、実装クラスをパッケージ内に隠蔽する技法はよく使います。
パッケージ宣言文がない場合、名前なしパッケージと見なされます。名前なしパッケージもパッケージの1つです。
浙公网安备 33010602011771号