共通キーワード分析

3572 ワード

一.可視性キーワードpublic,private,protected,default弁析1).範囲1つのプロジェクト:public 1つのパッケージ:public,protected,default 1つのクラス:public,protected,default,private eg:
 
package test1;

public class Student {
	public String name = " ";
	int score = 77;
	protected String cardNo = "435452354235";
	private int age = 20;

	protected void showInfo() {
		// 
		System.out.println("Name:" + name + ",Score:" + score + ",CardNo.:" + cardNo
				+ ",Age:" + age);
	}

	public static void main(String[] args) {
		new Student().showInfo();
	}
}

public class JNStudent extends Studio{public void sowInfo()/privateは同じパッケージのクラスから直接System.out.printlnにアクセスできません(「名前:」+name+「単位:」+score+「カード番号:」+cardNo);    } } package test2; public class UNStudent extends Student{public void sowInfo()/サブクラスは親クラスのprotected属性とメソッドに直接アクセスできるSystem.out.println(「名前:」+name+「カード番号:」+cardNo);}public class Test{public static void main(String[]args){Student s=new Student();s.name="張三";///private,defaultおよびprotectedタイプ変数は異なるパッケージでs.score=77に直接アクセスできない;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wInfo();//コンパイルは}}2を通過できる.protectedとdefaultの区別protectedタイプの方法と属性は、サブクラスで(同じパッケージにいなくても)アクセス可能であるが、defaultタイプは同じパッケージでのみ直接アクセス可能である3).キーワードの一般的な使用原則:役割ドメインのできるだけ小さいクラスの属性は一般的にprivateタイプであり、対外的にアクセスを提供する方法はpublicタイプ2である.finalキーワード1)finalキーワード修飾の変数が付与されると変更できない2)final修飾の方法は継承されないクラス書き換えeg:前例のStudentクラスの属性のタイプ銭にfinalを加えると、それらの修正に対してStudentクラスのshowInfo()メソッドにfinal修飾記号を付けると、サブクラスはpublic class Student{public final String name="張三";int final score=77;protected final String cardNo="435452354235";private final int age=20;protected final void showInfo()/様々な可視性キーが同じクラスでSystem.out.println("名前:"+name+"単位:"+score+"カード番号"+cardNo+"年齢:"+age); }}三.staticキーワード1)staticタイプの変数はクラスのロード時に初期化され,一度だけロードされ,その値が変更されるのは,他のクラスやオブジェクトでは修正後の値staticタイプ変数をクラス変数と呼び,「クラス名.静的変数」形式で直接2)staticメソッドをクラスメソッドと呼び,1つのクラスが使用されるとメモリにロードされるが実行されず,「クラス名.静的メソッド」形式で直接使用3)staticコードブロックはクラスロード時にここに淘宝面接問題を添付して読者に紹介する:public class A{public A(){System.out.print("A")}}public class B { public B() { System.out.print("B"); } } public class C { static A a = new A(); B b = new B(); public C() { System.out.println(); } public static void change() { B b = new B(); } public static void main(String[] args) { C c = new C(); C.change(); } } 答えは分析の最後の位置にある.解析:Cクラスに使用するため、Cはメモリにロードされ、static A a=new A();実行構造方法はAを印刷するが、静的方法のロードは実行する必要がなく、main方法にプログラムが入る.Cタイプのオブジェクトを作成して、先に属性を初期化して、aは静的変数で、すでに初期化して、もう実行しないで、Bタイプのオブジェクトを作成して、ABを印刷して、Cの構造方法を実行して、Cタイプのオブジェクトを作成して、Cを印刷して、それからmain方法の中に戻って、Cのクラスの方法change()を呼び出して、1つのBタイプのオブジェクトを作成して、ABを印刷します.最終的な結果はAABCAB 4である.superとthisキーワード;1).thisは現在のオブジェクトを表し、簡単に言えば、誰がこのクラスを使用するか、thisは誰であるかの2).同様に、superは現在の親オブジェクトを表すegが子クラスに現れる:次の例では混同しやすい箇所を詳細に分析するpublic class UNStudent extends Student{private Animal pet=new Animal(){private int length=0;public void showInfo(){this.length=56;//thisは匿名クラスの現在のオブジェクトsuper.showInfo();superは親クラスの現在のオブジェクトSystem.out.println("長:"+length);;;;}}};public void showInfo(){ super.showInfo(); pet.showInfo(); } public static void main(String[] args) { UNStudent s1 = new UNStudent(); s1.showInfo(); } } プログラム実行後の結果:氏名:張三単位:77カード番号435452354235年齢:20種類:Wolf体重:20長さ:56