JAVAは、子クラスと同じ名前の親クラスのメンバー変数をどのように呼び出しますか
【簡単な例】
親動物
public class animal {
public static int age =1;
public String name="alasijia";
public void eat() {
System.out.println("动物具有吃东西的能力!");
}}
サブクラスの犬
public class dog extends animal {
int age =10;
}
メイン
public class hei {
public static void main(String[] args) {
dog i = new dog();
i.eat();
System.out.println("age="+dog.age);
}
}
結果
静态变量
直接使用できる类名称.成员变量
フォームしかないので
例1(エラーが報告されます!!!)名前が同じ場合、親クラスをクラス名で呼び出すことはできません。
違いは:ある親クラスの年齢メンバ変数の前にstatic
、子クラスが持つ年齢のメンバー変数を主機能がされている。(类名称)dog.(成员变量)age
と呼ばれるでのフォーム
の親クラスの静的年齢= 1;サブクラス年齢= 10;
結果: エラー:ジャワ:静的コンテキストから参照することはできません非静的変数age
(类名称)animal.(成员变量)age
を使用できます
例2
差分:ある親クラスの年齢メンバ変数の前にstatic
、子クラスを有する。年齢メンバー変数を主な機能は、对象.成员变量
呼び出し
親クラス静的年齢= 1;子クラス年齢= 10;
結果: 年齢= 10 / /オブジェクトを使用するときは、最初にサブカテゴリにアクセスします(ある場合)。直接取得します。
例3
違い:親クラスの年齢メンバー変数の前にあり、サブクラスには年齢メンバー変数はありません。メイン関数は 親クラスを呼び出しますstatic age = 1;結果: age = 1 //クラス名が使用される場合、静的変数に直接アクセスすることも可能ですstatic
(类名称)dog.(成员变量)age
(类名称)animal.(成员变量)age
例4
違い:そこにある親クラスの年齢のメンバ変数の前にstatic
、子クラスがない持っていません。年齢のメンバ変数を主な機能は、对象.成员变量
呼び出す
親クラスの静的年齢= 1でフォーム;
結果: 年齢= 1 //ときに使用しました子クラスにオブジェクトがない場合は、オブジェクトを検索します。親クラスで見つかりました。
例5
違い:親クラスには年齢メンバー変数がなくstatic
、子クラスには年齢メンバー変数があります。メイン関数は对象.成员变量
、
親クラスage = 1;子クラスage = 10;の
結果と同じ方法で呼び出されます。 age = 10 //オブジェクトを使用するときは、最初のサブカテゴリにアクセスします(存在する場合)
例6
違い:親クラスには以前に年齢メンバー変数がなくstatic
、子クラスには年齢メンバー変数がありません。メイン関数は对象.成员变量
、
親クラスage = 1;サブクラスage = 10;
結果: age = 1 //の形式で呼び出されます。オブジェクトの使用、サブクラスそうでない場合は、検索し、親クラスで検索します
たとえば1、親クラスの年齢を呼び出すことができるメソッドもあります
Animal q1 = new Dog();
q1.age
結果は年齢= 1です。