封装与多态2(Java)

本文探讨了Java中的方法重写和多态,包括多态的两种表现形式,如何使用`instanceof`关键字判断引用类型,以及在重写`equals`方法中的应用。此外,还提供了通过父类作为返回值实现不同类型商品价格打印的练习,并阐述了抽象类的特性及其在多态中的应用。
摘要由CSDN通过智能技术生成

方法重写和多态

1. 多态的表现形式

1.父类作为形参,子类作为实参

2.父类作为返回值,实际返回值为子类类型

package com.edu.test2;
/**
 *  父类
 *  父类中编写子类共有的属性 和 方法
 */
public class Pet {
    private String name;
    private int health;
    private int love;
    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 int getLove() {
        return love;
    }
    public void setLove(int love) {
        this.love = love;
    }
    
    public void print() {
        System.out.println("宠物的名字是:" + name + ",健康值是:" + health + ",爱心值是:" + love );
    }
    
    public void cure() {
        System.out.println("给宠物看病");
    }
    
    
    public Pet() {
    }
    
    public Pet(String name, int health, int love) {
        this.name = name;
        this.health = health;
        this.love = love;
    }
    @Override
    public String toString() {
        return "name=" + name + ", health=" + health + ", love=" + love ;
    }
    
}
package com.edu.test2;
/**
 *  Dog类 
 *  品种
 *  print() 

 */
public class Dog extends Pet{
    
    private String strain;
    
    public String getStrain() {
        return strain;
    }
    public void setStrain(String strain) {
        this.strain = strain;
    }
    
    public Dog() {
    }
    
    public Dog(String strain,String name,int health,int love) {
        super(name, health, love);
        this.strain = strain;
    }
    
    
    
    
    @Override
    public String toString() {
        return "Dog [strain=" + strain + ","+super.toString()+"]";
    }
    
    
    public void cure() {
        super.cure();
        System.out.println("狗狗看病,吃药打针,吃骨头,健康值恢复");
        this.setHealth(100);
        this.setLove(100);
    }
        
}
package com.edu.test2;
/**
 *  主人类 
 *  
 *  需求:现在宠物店开业搞活动,抽奖送宠物
 *  一等奖:送成年雌企鹅一只
 *  二等奖:送狗狗一只
 *  三等奖:送猫咪一只
 *  幸运奖:送成年东北虎一只
 
 */
public class Master {
    private String name;
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
    
    
    public void toHospitalWithDog(Dog dog) {
        dog.cure();
    }
    
    public void toHospitalWithPenguin(Penguin penguin) {
        penguin.cure();
    }
    
    public void toHospital(Pet pet) {
        pet.cure();
    }
    //------------------------------------------------------
    public Penguin givePenguin() {
        Penguin penguin = new Penguin("雌性", "大白", 100, 10
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值