调用子类方法的两种方案

接之前内容……
编写主人喂宠物的方法Master:
方案一:编写方法,传入不同类型的动物,调用各自的方法

package java_ploy;

public class Master {
    /**喂宠物
     * 喂猫咪:吃完东西后,主人会带着去玩线球
     * 喂狗狗:吃完东西后,主人会带着狗狗去睡觉
     * 养兔子、养鹦鹉、养乌龟……
     */
    //方案一:编写方法,传入不同类型的动物,调用各自的方法
    public void feed(Cat cat){
        cat.eat();
        cat.playBall();
    }

    public void feed(Dog dog){
        dog.eat();
        dog.sleep();
    }
}

编写测试代码:

package java_ploy;

import java_ploy.Master;
import java_ploy.Cat;
import java_ploy.Dog;

public class MasterTest {
    public static void main(String[] args) {
        Master master = new Master();
        Cat one = new Cat();
        Dog two = new Dog();
        master.feed(one);
        master.feed(two);
    }
}

输出:

猫吃鱼~
小猫喜欢玩线球
狗吃肉~
狗有午睡的习惯~

方案二:编写方法传入动物的父类,方法中通过类型转换,调用指定子类的方法

//方案二:编写方法传入动物的父类,方法中通过类型转换,调用指定子类的方法
public void feed(Animal obj){
    obj.eat();  //子类中对父类的eat方法进行了重写
    if(obj instanceof Cat){
        Cat temp = (Cat)obj;
        //temp.eat();
        temp.playBall();
    }else if(obj instanceof Dog){
        Dog temp = (Dog)obj;
        //temp.eat();
        temp.sleep();
    }
}

输出结果和方案一相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值