代码理解多态

理解多态在这里插入图片描述


public class Animal {

    public void move(){
        System.out.println("Animal移动");
    }
}

class Cat extends  Animal{

    @Override
    public void move(){
        System.out.println("Cat走猫步");
    }
    //cat特有方法
    public void catchMouse(){

        System.out.println("cat抓老鼠");
    }
}

class Bird extends Animal{


    @Override
    public void move(){

        System.out.println("Bird飞翔");
    }
    //Bird特有方法
    public void sing(){

        System.out.println("Bird会唱歌");
    }
}

public class TestAnimal {

    public static void main(String[] args) {

        //向上转型(自动)
        Animal c = new Cat();
        c.move();//调用重写之后的move方法
        Animal b = new Bird();
        b.move();//调用重写之后的move方法

        //调用子类特有的方法时才需要向下转型
        if(c instanceof Cat){//判断底层c是否是Cat对象

            Cat cat =(Cat)c;
            cat.catchMouse();//向下转型后才能调用子类特有的方法

        }else if(c instanceof Bird){//肉眼能看到底层是什么对象,但是会存在一些方法的参数是父类引用,调用这些方法的时候可能传递的就是子类的实例,所以但是不确定是哪一个实例,急需要一一判断
            Bird b1 = (Bird) c;
            b1.sing();
        }

        if (b instanceof Bird){//判断底层b是否是Bird对象

            Bird bird = (Bird) b;
            bird.sing();//向下转型后才能调用子类特有的方法

        }else if(b instanceof Cat){

            Cat c1 = (Cat)b;
            c1.catchMouse();
        }

    }
}

将就看看吧,希望有所帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值