Javaのstatic、finalキーワード
3016 ワード
一、staticキーワードは、メンバー変数およびメンバーメソッド を修飾することができる. staticキーワードの特徴 クラスのロードに伴って がロードする.は、オブジェクトの存在よりも優先する である.はクラスのすべてのオブジェクトによって共有されます これも静的キーワードを使用するか否かを判断する条件 である.
はクラス名で を呼び出すことができる.
staticキーワード注意事項 静的メソッドではthisキーワードのない 静的メソッドは、静的メンバー変数および静的メンバーメソッド にのみアクセス可能である.
私たちはどのように理解しますか?1.静的はクラスのロードに伴ってロードされ、thisはオブジェクトの作成に伴って存在します.2.静的比オブジェクトが先に存在します.3.静的メソッド:メンバー変数:静的変数メンバーメソッドのみアクセス:静的メンバーメソッドのみアクセス4.非静的メソッド:メンバー変数:静的であっても非静的であってもよいメンバーメソッド:静的メンバーメソッドであっても非静的メンバーメソッドであってもよい.簡単な理解では、静的は静的にしかアクセスできません.
staticキーワードを学びましたので、静的変数とメンバー変数**の違いを学び続けましょう. A:属する異なる静的変数:クラスに属し、クラス変数メンバー変数:オブジェクトに属し、オブジェクト変数、インスタンス変数 B:メモリ位置の異なる静的変数:メソッド領域の静的領域メンバー変数:スタックメモリ C:ライフサイクルの異なる静的変数:静的変数はクラスのロードに伴ってロードされ、クラスの消失に伴って消失するメンバー変数:メンバー変数はオブジェクトの作成に伴って存在し、オブジェクトの消失に伴って消失する . D:異なる静的変数を呼び出す:オブジェクト名で呼び出すか、クラス名でメンバー変数を呼び出すか:オブジェクト名でのみ呼び出す .
二、finalキーワード
ではfinalは継承の中でどのように体現しているのでしょうか.
継承中のメソッドには、メソッドの書き換えという現象があるためです.だから、親の機能は布団類で覆われてしまいます.子クラスが親クラスの機能を上書きしないように、彼にしか使えない場合があるので、javaはこのような状況に対してキーワード:finalを提供しています.
出力結果:親クラスの出力結果に違いありません.
/** * Created by taoyali on 2016/10/25. */public class JavaKeyWorld {
public static void main(String[] args) {
JavaKeyWorldTest s = new JavaKeyWorldTest(); System.out.println(s.num);
s.resetNum2();
System.out.println(JavaKeyWorldTest.num2); JavaKeyWorldTest.resetNum2(); System.out.println(JavaKeyWorldTest.num2);
System.out.println(s.num2);
}
}
class JavaKeyWorldTest {
//
int num = 10;
//
static int num2 = 20;
public static void resetNum2(){
num2 += (int)Math.random();
}
public void resetNum2(int num){
num2 += (int)Math.random();
}
public int backInt(){
return (int)Math.random();
}
public void backInt(int num){
}
}
私たちはどのように理解しますか?1.静的はクラスのロードに伴ってロードされ、thisはオブジェクトの作成に伴って存在します.2.静的比オブジェクトが先に存在します.3.静的メソッド:メンバー変数:静的変数メンバーメソッドのみアクセス:静的メンバーメソッドのみアクセス4.非静的メソッド:メンバー変数:静的であっても非静的であってもよいメンバーメソッド:静的メンバーメソッドであっても非静的メンバーメソッドであってもよい.簡単な理解では、静的は静的にしかアクセスできません.
staticキーワードを学びましたので、静的変数とメンバー変数**の違いを学び続けましょう.
二、finalキーワード
final , , , 。
,
, ,
,
Demo final
class Fu {
public int num = 10;
public final int num2 = 20;
/* public final void show() { } */
}
class Zi extends Fu {
// Zi show() Fu show()
public void show() {
num = 100; System.out.println(num);
// num2
// num2 = 200;
//
System.out.println(num2);
}
}
public class FinalDemo{
public static void main(String[] args) {
Zi z = new Zi(); z.show();
}
}
ではfinalは継承の中でどのように体現しているのでしょうか.
継承中のメソッドには、メソッドの書き換えという現象があるためです.だから、親の機能は布団類で覆われてしまいます.子クラスが親クラスの機能を上書きしないように、彼にしか使えない場合があるので、javaはこのような状況に対してキーワード:finalを提供しています.
class Fu {
public final void show() {
System.out.println(" , ");
}
}
class Zi extends Fu {
// Zi show() Fu show()
//
public void show() {
// System.out.println(" ");//
}
}
public class FinalDemo{
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
出力結果:親クラスの出力結果に違いありません.