黄階低級-『Javaコア』-5.1類、スーパークラスとサブクラス(二)-修正0回


クラス、スーパークラス、サブクラス(二)
1つのオブジェクト変数は、複数の実際のタイプの現象を示すマルチステート(ploymorphism)と呼ばれ、実行時にどのメソッドを呼び出すかを自動的に選択できる現象を動的バインドと呼ぶことができます.
この点を説明するために、例を挙げます.
1、
package one;

public class Employee {

    private int salary = 5000;

    public int getSalary() {
        return salary;
    }
}//    Employee  

2、
package one;

public class Manager extends Employee {

    @Override
    public int getSalary() {
        return (super.getSalary() + 5000);
    }

}//        Employee    Manager  

3、
package one;

public class GetSalary {

    public static void main(String[] args) {

        Employee[] staff = new Employee[2];
        staff[0] = new Manager();
        staff[1] = new Employee();

        for (Employee i : staff) {
            System.out.println(i.getSalary());
        }
    }

}//          GetSalary  

4、
    :
10000
5000

5、結論:i.getSalary()呼び出しはどのgetSalary()メソッドを明確に呼び出すことができ、iはEmployeeタイプであるが、iはEmployeeタイプのオブジェクトを参照することもできるし、Managerタイプのオブジェクトを参照することもできる.仮想マシンはiが実際に考えているオブジェクトタイプだけを知り,対応するメソッドを正しく呼び出すことができる.