パッケージ宣言
クラスやインターフェースをグループ化するための仕組み。
パッケージを利用することで同名のクラスも使用可能になる。
例:Java
1.package aaa;
2.import java.io.*;
3.public class test{}
のように順番がある。
パッケージ⇒インポート⇒クラス
各順番は上記のように、パッケージから記述します。
import命令
パッケージ名を含めたクラス名の事を完全修飾名と言う。
パッケージを利用することで、ソース内のコードでパッケージを省略して
記述できるようになる。
例:Java
import java.util.Calendar;
上記のimportを使用していると、Calendarから使用できる。
importを使用しない場合は、
java.util.Calendar.MONTHのように長い命令文の記述が必要になる。
*但し例外がある。(java.langパッケージ)
例えば、Stringを例として
Stringは「java.lang」の中に含まれるクラスで、プログラム中では
「java.lang.String str = new java.lang.String("Test");」としないで
「String str = new String("Test");」と記述できる。
補足
インポートには使用しない方が良いとされている記述がある。
例:先ほどのjava.langを例に!
import java.lang.*;
上記の記述方法を、オンデマンドインポートと呼ばれている。
java.langのパッケージ全体をインポートとして使用できるが、
クラスを明確にするという意味で使用を避ける!
(Calendarで使用しているinportの仕方は単一型インポートとも言う)
static import命令
クラスのメンバーで、クラス名を指定せずに呼び出せる。
例:円周率を求めるにはMath.PIを使用。
static importを用いればPIだけで参照できる。
(同様にabsやtoRadians、toDegressも直接使用可能。)
修飾子
クラス修飾子
final・abstract・publicがある。
クラス
アクセス修飾子 | 意味 |
---|---|
final | 拡張継承を禁止する。(継承可能) |
abstract | インスタンス化できない。抽象クラス |
public | どこでもアクセス可能 |
コンストラクタ
アクセス修飾子 | 意味 |
---|---|
public | どこでもアクセス可能なコンストラクタ |
protected | 同一のクラス・パッケージ・サブクラスからOK |
private | 同一クラスからのみOK |
メソッド
アクセス修飾子 | 意味 |
---|---|
public | どこでもアクセス可能なコンストラクタ |
protected | 同一のクラス・パッケージ・サブクラスからOK |
private | 同一クラスからのみOK |
abstract | 抽象メソッド。実装はしない |
final | オーバーライド不可 |
static | 静的メソッド |
native | Java言語以外のモジュール内のメソッドの実装 |
synchronized | ロックを取得、同時アクセス× |
変数
アクセス修飾子 | 意味 |
---|---|
public | どこでもアクセス可能なコンストラクタ |
protected | 同一のクラス・パッケージ・サブクラスからOK |
private | 同一クラスからのみOK |
final | 値の変更ができない変数 |
static | 静的変数 |
transient | シリアライズの対象から除外 |
アクセス修飾子
public | protected | 省略 | private | |
---|---|---|---|---|
同一クラス | 〇 | 〇 | 〇 | 〇 |
同一パッケージ | 〇 | 〇 | 〇 | × |
サブクラス | 〇 | 〇 | × | × |
無関係 | 〇 | × | × | × |