多态的再练习


多态 note

First. 展示代码

// 父类
package yang.file;

public class Father {
    public void eat(){
        System.out.println("run\n");
    }

    public void come() {
        System.out.println("come ! \n");
    }
}

// 子类
package yang.file;

public class son extends Father{
    //Override
    public void eat(){
        System.out.println("eat\n");
    }
}

// 主函数
package yang.file;

public class Rot {
    public static void main(String[] args) {
        Father f = new son();
        Father s = new Father();

        f.eat();
        f.come();
        s.eat();
        s.come();
    }
}

运行结果

Father f = new son();的功能在于,
Father f = new Father();的基础上,得以使用被子类重构的方法。
f 依然可以使用自己的方法)
但是调用子类方法时,仅限于 父子类均有的方法 ,若方法为子类特有,则父类无法调用。

如图中,两者的区别在于调用两者共有的 eat(); 方法,因为子类重写,所以父类在调用时,会按照子类的标准来执行。