JAVAは、子クラスと同じ名前の親クラスのメンバー変数をどのように呼び出しますか

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です。

おすすめ

転載: blog.csdn.net/TOPic666/article/details/105366946