java中的多態

源於生活

語文課上劉老師給大家講了一則故事:
一天,獵人上山打獵,走到半山坡上,發現一隻野兔撞死在了樹樁上面,撿起兔子就回家了;之後獵人就每天守在樹樁旁打盹,等着其他的兔子撞死,十天半個月過去了,獵人什麼都沒帶回家;後來他老婆投被隔壁老王去了。
故事講完了,重點來了,劉老師讓大家各自發表一下讀後感!
劉老師心裏想:獵人他老婆真傻,要另外找也找個遠一點嘛,找在隔壁怪尷尬的。
小明讀後感:那兔子是不是撒,能自己撞死在樹上。
小芳讀後感:兔兔這麼可愛,怎麼可以吃兔兔。
小玉讀後感:是誰亂砍伐樹木,我要告訴我林業局的局長爸爸。

這裏大家都有讀後感,劉老師那裏的是個標準的,其他學生的各不相同,是不是就是同一問題的多種回答方式啦,簡稱“多態”。

java中到達以上效果我們可以使用重載,但是重載的問題時學生太多,重置的方式太繁瑣了,五十個學生讀後感的方法得重載五十次;這個時候就該多態登場了,一次性解決N多學生的讀後感發言。

注意

  1. 多態是方法的多態,不是屬性的多態(多態與屬性無關)。
  2. 多態的存在要有3個必要條件:繼承,方法重寫,父類引用指向子類對象。
  3. 父類引用指向子類對象後,用該父類引用調用子類重寫的方法,此時多態就出現了。
  4. 多態的主要優勢是提高了代碼的可擴展性。

示例

採用多態的思想,只需要創建一個點名方法,劉老師使用點名方法,指定一個具體的人就可以了。
這裏的點名方法就實現了多態,可以傳入具體的學生也可以傳入老師還可以傳入人!它一個方法就處理了多種情況。
渣渣代碼,大概意思意思,肯定是不夠嚴謹的。

public class Hello {
    public static void main(String []args) {

        //教室裏有一幫人,我們先new出來
        Liulaoshi lls = new Liulaoshi();
        Xiaoming xm = new Xiaoming();
        Xiaohua xh =new Xiaohua();
        Xiaoyu xy = new Xiaoyu();

        lls.jianggushi(); //劉老師講故事啦

        dianming(xm);//點名 小明回答
        dianming(xh);//點名 小花回答

    }

    public static void dianming(Human r){
        r.duhougan();
    }
}


class Human{
    public void duhougan(){
        System.out.println(" 我想靜靜。");
    }
}


class Liulaoshi extends Human{
    private  String name="劉老師";
    public  void jianggushi(){
        System.out.println("一天,獵人上山打獵,走到半山坡上,發現一隻野兔撞死在了樹樁上面...");
    }

    public void duhougan(){
        System.out.println(name+"讀後感:獵人他老婆真傻,要另外找也找個遠一點嘛,找在隔壁怪尷尬的。");
    }
}


class Xiaoming extends Human{
    private  String name="小明";
    public void duhougan(){
        System.out.println(name+"讀後感:那兔子是不是撒,能自己撞死在樹上。");
    }
}


class Xiaohua extends Human{
    private  String name="小花";
    public void duhougan(){
        System.out.println(name+"讀後感:兔兔這麼可愛,怎麼可以吃兔兔。");
    }
}

class Xiaoyu extends Human{
    private  String name="小玉";
    public void duhougan(){
        System.out.println(name+"讀後感:是誰亂砍伐樹木,我要告訴我林業局的局長爸爸。");
    }
}

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