定义一个宠物类(Pet),它有两个方法:叫cry(),吃东西eat(),定义宠物的子类狗(Dog),猫(Cat),覆盖父类的cry(),eat()方法,里面写System.out.println(“

 定义一个宠物类(Pet),它有两个方法:叫cry(),吃东西eat(),定义宠物的子类狗(Dog),猫(Cat),覆盖父类的cry(),eat()方法,里面写System.out.println("猫吃了鱼")这样的打印语句,另外狗有自己的方法看门guardEntrance(),猫自己独有的方法捉老鼠huntMice()

1.定义一个Test类,在main中定义两个Pet变量,pet1,pet2,采用引用转型实例化Dog,Cat,分别调用Pet的cry(),eat();

2.将Pet引用强制转换为具体的Dog,Cat,并调用Dog的guardEntrance(),Cat的huntMice()(提示:先用instanceof进行类型判断)

Pet class 

package 继承与多态t4;

public class Pet {
    public void cry() {
        System.out.print("叫:");
    }

    public void eat() {
        System.out.print("吃东西:");
    }
}

Dog class  

package 继承与多态t4;

public class Dog extends Pet{
    @Override
    public void cry() {
        super.cry();
        System.out.print("狗叫"+"\n");
    }

    @Override
    public void eat() {
        super.eat();
        System.out.print("狗吃了鱼"+"\n");

    }

    public void guardEntrance() {
        System.out.print("看门"+"\n");
    }
}

 Cat class

package 继承与多态t4;

public class Cat extends Pet {
    @Override
    public void cry() {
        super.cry();
        System.out.print("猫叫"+"\n");
    }

    @Override
    public void eat() {
        super.eat();
        System.out.print("猫吃了鱼"+"\n");
    }
    public void huntMice(){
        System.out.print("捉老鼠"+"\n");
    }
}

Test Class 

package 继承与多态t4;

public class Test {
    public static void main(String[] args) {
        Pet pet1=new Dog();
        Pet pet2=new Cat();
        pet1.cry();
        pet2.eat();

        Pet dog=new Dog();
        Dog dog1=(Dog) dog;
        Pet cat=new Cat();
        Cat cat1=(Cat) cat;

        System.out.println(dog1 instanceof Dog);
        System.out.println(cat1 instanceof Cat);
        //我的想法是,如果输出照常执行,那就说明类型没错,可以进行调用。如果类型有错,他输出就会报错嘛,就不会执行了,不需要使用if else。
        dog1.guardEntrance();
        cat1.huntMice();
    }
}

运行如图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq2252351594原清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值