第二章第五天多态一

  1. 多态的概述

什么是多态:多种形态。

分两部分:

  1. 功能多态:一个行为多种实现方式 体现:重写和重载
  2. 形态多态:一个类型的多种表现形式比如:动物多种表现形式:猫、狗

Animal a=new Dog();//父类的引用指向子类的对象(即向上转型),反过来不行

水:气态,冰

描述一类对象的时候,比如我可以称呼猫为猫,还可以说猫是动物,人这一类两种表现形式:男人、女人,动物的表现形式:猫、狗、猪、蛇、老鼠

实现多态:方式?

重写  重载

多态概念;

多态的有点

多态的使用

需求:定义cat  dog,抽取父类(公共属性  公共行为呢?)

Cat 行为:吃  睡 捉老鼠 叫

Dog 行为:吃  睡 看门 叫

Animal 行为:吃 叫 睡

人类:eat sleep

学生 eat sleep study

教师 eat sleep work

软件工程师 eat sleep program

使用多态时一些 注意事项:

  1. 存在继承
  2. 方法重写

OOP优势:高度实现应用程序的可维护性、扩展性和安全性

例一、使用多态为宠物看病

需求说明:

(1)编写主人类(Master),添加不同的方法,根据输入的宠物类型不同,为不同的宠物看病。编写测试类验证;

(2)使用多态修改代码,为各宠物类添加看病的方法,主人类中保留一个为宠物看病方法即可,参数类型为宠物类类型。编写测试类验证输出效果如图所示。(注意:同一个引用类型,使用不同的实例而执行不同操作就是多态;方法重写是实现多态的基础)

package day08.demo1;

/**
 * 猫类
 */
public class Cat extends Pet{
    public Cat(){

    }

    public Cat(String name, int healthy, int love, String variety) {
        super(name, healthy, love,variety);
    }

    /**
     * 治疗
     */
    @Override
    public void cure() {
        if(this.getHealthy()<=10){
            System.out.println("*********************************");
            System.out.println("吃药");
        }
    }
}
package day08.demo1;

/**
 * 狗类
 */
public class Dog extends Pet{

    public Dog(){

    }

    public Dog(String name, int healthy, int love, String variety) {
        super(name, healthy, love,variety);
    }

    /**
     * 治疗
     */
    @Override
    public void cure() {
        if(this.getHealthy()<=10){
            System.out.println("*********************************");
            System.out.println("吃药");
        }
    }
}
package day08.demo1;

/**
 * 主人类
 */
public class Master {
    public void treatment(Pet pet){
        pet.cure();
    }
}
package day08.demo1;

import day02.Calculator;

/**
 * 测试类
 */
public class Test {
    public static void main(String[] args) {
        Pet dog=new Dog("无名氏",10,20,"吉娃娃犬");
        dog.show();
        Master master=new Master();
        master.treatment(dog);
        System.out.println();
        Pet cat=new Cat("小白",60,20,"中国猫");
        cat.show();
        master.treatment(cat);

    }
}

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值