Java基础——多态

1 篇文章 0 订阅
文章介绍了Java中的多态概念,包括它的定义、必要条件(继承、重写、父类引用子类对象)以及优点。通过喂宠物的实例展示了多态的应用,具体涉及Cat和Dog类继承自抽象类PetAnimal并重写feedPet方法。此外,还提到了多态的实现方式,包括重写、接口和抽象类。
摘要由CSDN通过智能技术生成

目录

一、什么是多态?

二、多态的三大必要条件:

三、多态的优点:

 四、实例——喂宠物

五、多态的实现方式


一、什么是多态?

        某一事物的不同表达形式,即多态。

        在Java中,多态是同一个行为具有多个不同表现形式或形态的能力。也可以类比成同一个接口,使用不同的实例执行不同的操作。

二、多态的三大必要条件:

        1、继承

        2、重写

        3、父类引用子类对象:Parent p = new Child();

三、多态的优点:

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

 四、实例——喂宠物

        

package Day8_Polymorphic.HomeWork.Work1;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        System.out.print("喂宠物(1、猫 2、狗):");
        Scanner scanner = new Scanner(System.in);

        int count = scanner.nextInt();
        switch (count){
            case 1:
                selectPet(new Cat("猫猫",70));
                break;
            case 2:
                selectPet(new Dog("狗狗",70));

        }
    }

    public static void selectPet(PetAnimal petAnimal){
        if (petAnimal instanceof Cat){
            Cat cat = (Cat) petAnimal;
        } else if (petAnimal instanceof Dog) {
            Dog dog = (Dog) petAnimal;
        }
    }

}
package Day8_Polymorphic.HomeWork.Work1;

import java.util.Scanner;

public abstract class PetAnimal {

    private String name;
    private int health;

    public PetAnimal(String name, int health) {
        this.name = name;
        this.health = health;
        System.out.println(name + "的健康值为:" + health);
        Scanner scanner = new Scanner(System.in);
        System.out.print("是否喂宠物(1、是 2、否):");
        int mount = scanner.nextInt();
        switch (mount){
            case 1:
                this.feedPet();
                break;
            case 2:
                System.out.println("你的宠物健康值正在减少");
                System.out.println(name + "的健康值为:" + (health - 10));
                break;
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
    }

    // 喂宠物
    public abstract void feedPet();
}
package Day8_Polymorphic.HomeWork.Work1;

public class Dog extends PetAnimal{
    public Dog(String name, int health) {
        super(name, health);
        this.feedPet();
    }

    @Override
    public void feedPet() {
        this.setHealth(super.getHealth() + 10);
        System.out.println("狗狗的健康值为:" + this.getHealth());
    }
}
package Day8_Polymorphic.HomeWork.Work1;

public class Cat extends PetAnimal{


    public Cat(String name, int health) {
        super(name, health);

    }

    @Override
    public void feedPet() {
        this.setHealth(super.getHealth() + 10);
        System.out.println("猫猫的健康值为:" + this.getHealth());
    }

}

五、多态的实现方式

方式一:重写

方式二:接口

  • 1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。

  • 2. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。

方式三:抽象类和抽象方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值