修飾子 [qualifier]
修飾子
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/14 08:30 UTC 版)
「キーワード (Java)」の記事における「修飾子」の解説
クラス、メンバの宣言に付けられる修飾子である。 public, protected, privateクラス、メンバのアクセス制御を指示する修飾子(アクセス修飾子(英語版))である。外部からアクセス可能な範囲を決める。Javaでは4つの段階が設けられ、以下の番号が大きくなるほど外部からのアクセスが制約される。publicでは、すべてのクラスからアクセスできる。 protectedでは、同一パッケージにあるクラスかサブクラスからのみアクセスできる。異なるパッケージでサブクラスでないクラスからはアクセスできない。クラスを修飾することはできない (内部クラスは例外)。 アクセス修飾子がない場合は、同一のパッケージ内のクラスからのみアクセスできる。サブクラスであってもパッケージが異なる場合はアクセスできない。 privateでは、他のクラスからはアクセスできず、自クラスからのみアクセスできる。クラスに修飾することはできない (内部クラスは例外)。 Java SE 1.0ではprivate protectedという組み合わせを使用して、自分自身とサブクラスからのアクセスができるが同じパッケージ内の他のクラスからはアクセスできないというアクセス権を使用することができたが、これはJava SE 1.1以降から廃止され利用することができなくなった。 finalフィールドに付けられた場合は再代入を禁止する。メソッド宣言に付けられた場合は、下位クラスで上書きできないことを表す。クラス宣言に付けられた場合は、継承できないことを表す。なお、Javaでは、final宣言されたフィールドで、宣言部では初期化せずコンストラクタ内で1回だけ代入できる記述も行える。abstractとの併用はできない。メソッドの引数やローカル変数に使用すればその引数やローカル変数に対して再代入を許さないため、堅牢性の高いメソッドを作ることができる。final修飾子は「イミュータブル (不変)」なクラスを実装するときに役立つ。 例1: public class SampleClass { final int constantValue = 5;} 例2: public class SampleClass { final int constantValue; // 初期化なし // コンストラクタ public SampleClass() { constantValue = 5; // 1回だけ代入できる。 }} staticフィールドに付けられた場合は、クラスに属する変数(クラス変数、静的フィールド、クラスフィールド)が確保されることを表す。この修飾子のついたフィールドは、インスタンスがいくつ生成されてもフィールドの実体は1つで、すべてのインスタンスの間で共有される。 記述例: class SampleClass { static String shared = "shared"; static final String STR = "constant";} メソッドに付けられた場合は、オブジェクトを生成しなくても直接呼び出せるメソッド(静的メソッド、クラスメソッド)であることを表す。手続き型言語の関数と同じ扱いになる。 例: class Sample1 { // static なメソッド public static void method() { ... }}class Sample2 { void proc() { ... Sample1.method(); // インスタンスを生成せず直接実行できる。 ... }} クラス内にstatic {...}というブロックが現れた場合は、そのクラスが最初に参照されたときにそのブロック内のコードを実行する。これを静的初期化子と呼び、主にstatic finalな配列やCollectionオブジェクトの初期化などに利用される。データベースにアクセスするためにJDBCドライバを呼び出すClass.forName("ドライバ名")もこの静的初期化子を呼び出している。 例: class StaticInitSampleClass { private static final List
※この「修飾子」の解説は、「キーワード (Java)」の解説の一部です。
「修飾子」を含む「キーワード (Java)」の記事については、「キーワード (Java)」の概要を参照ください。
「修飾子」の例文・使い方・用例・文例
- 修飾子のページへのリンク