Javaの非アクセス制御子:static,final,abstract
3556 ワード
非アクセス制御子
非アクセス制御子
基本的な意味
修飾クラス
修飾メンバー
修飾ローカル変数
static
スタティック、非インスタンス(本質)、クラス
内部クラスを修飾可能
Yes
final
変えられない
Yes
Yes
Yes
abstract
イメージング
Yes(抽象を修飾する方法)
Yes
コントロール:static
staticフィールド静的フィールドの最も本質的な特徴は、次のとおりです. はクラスのフィールドであり、いずれのオブジェクトインスタンスにも属しません.
オブジェクトインスタンスのメモリ区間ではなく、クラスのメモリ領域の共通メモリユニットに保存されます. クラス変数は、クラス名で直接アクセスしてもよいし、インスタンスオブジェクトでアクセスしてもよい.2つの方法の結果は同じである. Systemクラスのinとoutオブジェクトのように、クラスに属するドメインであり、直接クラス名でアクセスする 上記コードセグメントでは、クラスPersonにクラスドメインtotalNum が定義されている. totalNumは、特定のインスタンス・オブジェクトに関係なく、
したがって、は、staticフィールドがインスタンスオブジェクトと無関係であるため、ある意味でグローバル変数を表すために使用することができる.
staticメソッド static修飾子で修飾する方法はクラスの静的メソッドにのみ属し、クラスメソッドとも呼ばれる. これに対してstatic修飾を用いない方法は、インスタンス方法である. クラスメソッドの本質は、このメソッドがクラス全体に属し、あるインスタンスに属していないことである. は、staticに以下のいくつかの意味を持つ方法を宣言する. static以外のメソッドがオブジェクトに属するメソッドである場合、このオブジェクトが作成されると、オブジェクトのメソッドはメモリに独自のコードセグメントを持つ.staticの方法はクラス全体に属し、メモリ内のコードセグメントはクラスの定義に従って割り当てられ、ロードされ、いずれのオブジェクトにも固有ではありません. staticメソッドはクラス全体に属するため、あるオブジェクトに属するメンバー変数を操作および処理することはできず、クラス全体に属するメンバー変数のみを処理することができ、すなわちstaticメソッドは本クラスのstaticドメインまたはstaticメソッドを呼び出すことしかできない. staticメソッドでは、インスタンス変数にアクセスできず、thisとsuperは使用できません.thisとsuperは具体的な例を表しているので,ある意味staticとthisは対立関係といえる. このメソッドを呼び出す場合は、クラス名を使用して直接呼び出すべきであり、特定のオブジェクトを使用してもよい.例えば:
import static
コントロール:final finalクラス クラスがfinal修飾子によって修飾され、限定される場合、このクラスは継承できない、すなわちサブクラスがあるはずがないことを示す.
finalメソッド final修飾子で修飾する方法は、布団類で覆われない方法である. finalフィールドおよびfinalローカル変数 finalフィールド、finalローカル変数(メソッドの変数) の値は、いったん指定されると変更できません. は読み取り専用量であり、1回のみ付与され、複数回付与されない.
1フィールドは 例:Integer.MAX_VALUE、Math.PI
賦課について finalフィールドを定義する場合、staticのドメインでない場合は、1回のみ付与する必要があり、デフォルトではありません. というドメインの付与方法には、変数を定義するときに初期化する方法と、各構造関数で付与する方法の2つがあります.
finalローカル変数を定義する場合も、定数ではない可能性がありますが、変数が存在する間は値は変更されません.
コントロール:abstract abstractクラス abstract修飾子で修飾されたクラスを抽象クラスと呼ぶ. 抽象クラスはインスタンス化できません
abstractメソッド abstractによって修飾された方法を抽象方法と呼び、抽象方法の役割はサブクラスのために統一されたインタフェースを定義することである.抽象的な方法は宣言するだけで、実現する必要はありません.すなわち、セミコロン(;){}ではなく、 という形式です.抽象クラスには抽象メソッドが含まれていてもよいし、abstractメソッドが含まれていなくてもよい.ただし、クラスにabstractメソッドが含まれている場合、このクラスはabstractクラスとして宣言する必要があります. 抽象メソッドは、サブクラスで実装されなければならない.そうしないと、サブクラスはabstractクラスである.
非アクセス制御子
基本的な意味
修飾クラス
修飾メンバー
修飾ローカル変数
static
スタティック、非インスタンス(本質)、クラス
内部クラスを修飾可能
Yes
final
変えられない
Yes
Yes
Yes
abstract
イメージング
Yes(抽象を修飾する方法)
Yes
コントロール:static
staticフィールド
System.out
である.class Person{
private static int totalNum;
private int age;
private String name;
}
Person.totalNum
およびp.totalNum
(pはPersonのインスタンス・オブジェクト)にアクセスできる合計人数を表します.したがって、
staticメソッド
Math.random(), Integer.parseInt()
などがクラスメソッドであり,直接クラス名でアクセスする.import static
import static java.lang.System.*
; staticのより強い書き方out.println();
は、System.out.println();
が書きやすいことを示しています.コントロール:final
static final
の2つの修飾子によって制限されたタイミングであり、定数を表すことができ、Javaではconstは保留キーワードとして使用されているが使用されていない.static final
ドメインを定義する場合、初期値が与えられなければデフォルトで初期化する(数値は0、booleanはfalse、参照型はnull).コントロール:abstract
abstract returnType abstractMethod([ paramlist ]);