多态常见应用场景举例

package day0611;

public class Test {

    /**多态在实际开发中的使用,以下为主人喂养宠物的例子说明多态的作用
     *1.主人喂养宠物这个场景需要进行类型的抽象:
     *---主人【类】 宠物【类】
     *--主人可以喂养宠物 所以主人有喂养这个动作
     *-- 宠物【类】
     *--宠物可以吃东西,所以宠物有吃东西这个动作
     *
     *--2.面向对象编程的核心:定义好类,将类实例化为对象,给一个环境驱使一下,让各个对象之间协作起来形成一个系统
     *3.多态的作用是什么
     */
    public static void main(String[] args) {//有多态后,测试类中没什么大的变化,还是要把具体的事物猫 狗类创建。

        //创建主人对象
        Master ZhangSan=new Master();

        Cat cat=new Cat();//类是无法进行协作的,需要把类实例为对象,对象在java中才可以进行协作。
        ZhangSan.feed(cat);//ZhangSan和cat都是创建的对象,通过对象吧事物联系了起来。
        Dog dog=new Dog();
        ZhangSan.feed(dog);//在这个传参的过程中,相当于发生了:Pet pet=new Dog();这就是向上转型,或者说是父类的引用指向了子类的对象,这就呼应的多态的定义:Pet pet=new Dog();
//那么,综合起来,有继承 有方法的重写,有向上转型。者就完成了多态。
    }

}

 

package day0611;

/**
 * 主人

*/
public class Master {
    /**
     * 这种方式没有使用多态,存在的缺点是:master的扩展能力差,因为要增加一个新的宠物,Master类就要增加一个新的方法
     * 喂养宠物的方法:增加了喂狗的方法后,这个就要改了,不合理
    */
/*public void feed(Cat c){
    c.eat();//这里并没有创建对象,也没有静态类,之所以可以直接调用是因为传参后,相当于传了对象,引用,可以直接调用,记住就可以了

}

public void feed(Dog d){
    d.eat();

}*/
//Master和Cat Dog这两个类型的关联类型很强,耦合度很高,扩展能力差


//降低程序的耦合度【解耦合】,提高程序的扩展力,【软件开发的一个重要的目标】
public void feed(Pet pet){//参数是pet,两类建立了联系
    pet.eat();
}
}

package day0611;
/**
 * 宠物类
 *
 * @author Administrator
 *
 */
public class Pet {

    public void eat(){
        /**
         *所有的宠物都可以吃东西
         */
    }
}
 

package day0611;
/**
 * 宠物小猫
*/
public class Cat extends Pet{
//小猫爱吃鱼

public void eat(){

System.out.println("小猫正在吃鱼");
}
}
 

package day0611;
/**
 * 宠物小狗
 */
public class Dog extends Pet{
//宠物小狗喜欢吃骨头
    public void eat(){
        System.out.println("小狗正在吃骨头");
    }
}
 

总结:多态的核心是在哪个类里可以体现多态,这个类的方法如果不使用多态,就需要写多个方法。那个类里使用多态的语句,比如是饲养员Person这个类。比如饲养方法,饲养的是狗 猫 需要不同的方法。重要的就是测试类和主人类,测试类中创建对象,主人类中定义声明核心方法feed()。

另有概述参考本人另一篇java多态。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值