Javaのpackage・import・修飾子に関するメモ
package
Javaパッケージ(Java package)は名前空間の中にあるJavaクラスをまとめるメカニズムである。(wikipediaより)
packageとは、複数のクラスをまとめる仕組みであり、クラスの名前空間やアクセス制御に利用される。
パッケージに分割するとクラスやインターフェースの名前衝突を防ぐことができる。
しかし、Javaにはパッケージ名の衝突を防ぐ仕組みはなく、インターネットドメイン名(DNSドメイン名)を利用することを推奨している。
/* パッケージ名 */
info.ktaro.www
パッケージ宣言は、行の先頭で行う必要がある。
/* 例 */
package info.ktaro.www
class Sample{
...
}
import
Javaソースファイル内でパッケージを使うことで、import文でパッケージからクラスをインポートすることは便利なものとなる。(wikipediaより)
import文は、他のパッケージ内のクラスやインターフェイスを参照するために利用する。
ただし、上記は必須ではない。
/* importを利用しない書き方 */
java.util.List<String> list = new java.util.ArrayList<String>();
/* importを利用した書き方 */
import java.util.*
...
List<String> list = new List<String>();
importの種類
オンデマンドインポート
アスタリスク(*)を利用したインポート。
import java.util.*
単一型インポート
個別に型名を指定したインポート。
import java.util.List
オンデマンドインポートは便利な半面、多用すると名前衝突を発生させる可能性が高くなるため、なるべく単一型インポートを行うように心がける。
修飾子
クラス
修飾子(アクセス制御)
修飾子 | 意味 |
---|---|
public | どこからでもアクセス可能。 |
なし | 同一パッケージ内のみアクセス可能 |
修飾子
修飾子 | 意味(記述なし) |
---|---|
final | 拡張継承を禁止。(継承可能) |
abstract | 抽象クラス。(具象クラス) |
... | ... |
メンバ(フィールド、メソッド、コンストラクタ、etc.)
修飾子(アクセス制御)
修飾子 | 意味 |
---|---|
public | どこからでもアクセス可能。 |
private | そのクラス内からのみアクセス可能 |
protected | そのクラス内、継承クラス、パッケージ内の他クラスからアクセス可能 |
なし | そのクラス内、パッケージ内の他クラスからアクセス可能 |
フィールド宣言
修飾子 | 意味 |
---|---|
final | 再代入禁止。(定数) |
static | クラスフィールド |
... | ... |
メソッド宣言
修飾子 | 意味 |
---|---|
final | オーバーライド不可 |
static | クラスメソッド |
abstract | 抽象メソッド |
... | ... |