Java中性子クラス呼び出し親メソッド

1033 ワード

参考記事:トランスポートゲート
あるクラスが別のクラスに継承され、サブクラスに親のメソッドがない場合.サブクラスのオブジェクトでメソッドを呼び出すと、まずサブクラスで検索され、サブクラスにメソッドがない場合は親クラスで検索されます.メソッドが親クラスでのみ定義されている場合、メソッドが呼び出されると、親クラスのプロパティが使用されます. 
このメソッドで他のメソッドが呼び出された場合は、前の順序でサブクラス(サブクラスのプロパティを使用)を検索し、親クラス(親のプロパティを使用)を検索します.
package Temp;

class A {
    int x = 6;
    private int y = 2;

    public A(int a) {
        x = a;
    }

    int getz() {
        int z;
        z = x / y;
        return z;
    }

    void show() {
        System.out.println("x=" + x);
        System.out.println("y=" + y);
        System.out.println("z=" + getz());
    }
}

class B extends A {
    int x = 3, y = 5, z;

    public B(int a) {
        super(a);
    }

    int getz() {
        z = x + y;
        return z;
    }
}

public class Temp {
    public static void main(String[] args) {
        A num1 = new A(10);
        B num2 = new B(9);
        num1.show();
        num2.show();
    }
}

出力結果:
x=10

y=2

z=5

x=9

y=2

z=8