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+"读后感:是谁乱砍伐树木,我要告诉我林业局的局长爸爸。");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值