一段代碼來引入靜態綁定和動態綁定的學習

好久沒有來更新博客了,最近在學習的過程中,發現有段代碼執行結果很有趣,所以就記錄下來,希望大家可以使用下面的代碼自己來運行,看看運行結果是怎麼樣的,根據運行的結果來思考下,爲什麼會是這樣?

// 入口
public class MainDemo {
    public static void main(String[] args) {
        Person person = new ZhangSan();
        Food food = new Fruit();

        person.eat(food);
        person.eat(new Fruit());
    }
}

// 定義食物接口
public interface Food {
}
// 定義水果繼承食物
public class Fruit implements Food {
}

// 定義人類
public abstract class Person {
    public void eat(Food food) {
        System.out.println("每個人都需要吃食物");
    }

    public void eat(Fruit fruit) {
        System.out.println("有的人喜歡吃水果");
    }
}
// 定義張三繼承人類
package com.java.demo;

public class ZhangSan extends Person {
    public void eat(Fruit fruit) {
        System.out.println("有的人喜歡吃水果");
    }
}

上述的代碼已經都貼完整了,現在大家可以思考下,執行後的結果會是什麼?
大家可以將自己思考的思路可以留言在博客下,便於大家一起討論學習!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章