面向对象的三大特征之一:多态

学习多态的基础语法之前先普及两个概念:

第一个:向上转型

子——>父

第二个:向下转型

父——>子

无论是向上还是向下转型,两种类型之间必须有继承关系。

多态指的就是 父类型的引用指向子类型的对象

public class Animal{
     public void move(){
          System.out.println("动物在移动")
     }
}


class Bird extends Animal{
    public void move(){
         System.out.println("鸟在飞翔")
    }

}

class Cat extends Animal{
    public void move(){
         System.out.println("猫在散步")
    }
    public void catchMouse(){
         System.out.println("猫抓老鼠")
    }
 
}

class AnimalTest{
    public static void main(String[] args){
         Animal a1 = new Bird();  //父类的引用指向子类的对象
         Animal a2 = new Cat();   //编译阶段属于静态绑定,运行阶段属于动态绑定
         a1.move();
         a2.move();
         //a2.catchMouse(); 编译不通过,父类中没有此方法。
         Cat y = (Cat)a2;  //调用子类中特有的方法,需要向下转型。
         y.catchMouse(); 
    }
}

多态表示多种形态:

编译时候一种形态(静态绑定),运行时候另一种形态(动态绑定)。 

当需要访问的是子类中“特有”的方法,此时需要向下转型。

运算符instanceof的含义及用法

1.运算符nstanceof可以在运行阶段动态判断引用指向的对象类型

2.运算符instanceof的语法:引用   instanceof   类型

3.运算符instanceof的结果只能是ture/false

4.假设c是一个引用,c变量保存了内存地址指向了堆内存中的对象

假设(c  instanceof Cat)为ture 表示:c引用指向的堆内存中的对象是一个Cat

假设(c  instanceof Cat)为false 表示:c引用指向的堆内存中的对象不是一个Cat

5.任何时候,对类型进行向下转型时候,一定先使用运算符instanceof进行判断

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱编程的小疯子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值