【JAVA】(継承)サブクラスのsuperキーワード

10841 ワード

superキーワードの使用
サブクラス・オブジェクトからアクセスする方法:まず、サブクラス・メンバーの範囲で検索し、親クラス・メンバーの範囲で検索します.overrideの後に親クラスの同名メソッドを呼び出すにはsuper.メソッド名()を使用します.
public class Fu {

    public void show(){
        System.out.println("   show()     ");
    }
}
public class Zi extends Fu {

    public void method(){
        System.out.println("  method()     ");
    }

    @Override       //              
    public void show(){
    	//  super        show()  
        super.show();
        System.out.println("   show()     ");
    }
}
public class SuperTest {
    public static void main(String[] args) {
        //    
        Zi z = new Zi();
        z.method();
        z.show();
    }
}

印刷結果:
  method()     
   show()     
   show()     

superメモリ管理
mianでZiクラスオブジェクトを作成します.最初のステップ:スタックメモリにスペース格納オブジェクト「z」のスタックメモリ内のアドレスを申請します.2番目のステップ:次にサブクラスのメンバー変数を初期化します(スタックメモリにサブクラスのメンバー変数が格納されます)、3番目のステップ:次にサブクラスにアクセスするパラメータなし構築方法を黙認します.子クラスの無パラメトリック構築メソッドにアクセスするときに親クラスの無パラメトリックメソッドに優先的にアクセスします.ステップ4:次に、親クラスのメンバー変数を初期化します(スタックメモリにsuper空間を開いて親クラスのメンバー変数を格納します).ステップ5:次に、親クラスの無パラメトリック構築メソッドにアクセスし、親無パラメトリック構築メソッドのアクセスが終了すると、次に、サブクラスに戻り、サブクラスの無パラメトリック構築メソッドへのアクセスを継続し、終了後、他のメソッドへのアクセスを継続します(スタックアウトスタックに順次進みます).最後に、mainはスタックからの終了を終了します.
public class Fu {

    public Fu(){
        System.out.println("       ");
    }

    public void show(){
        System.out.println("   show()     ");
    }
}
public class Zi extends Fu {

    public Zi(){
        System.out.println("       ");
    }

    public void method(){
        System.out.println("  method()     ");
    }

    public void show(){
        super.show();
        System.out.println("   show()     ");
    }
}
public class SuperTest {
    public static void main(String[] args) {
        //    
        Zi z = new Zi();
        z.method();
        z.show();
    }
}

結果を表示:
       
       
  method()     
   show()     
   show()