多态的基础语法

向上转型和向下转型的概念。

向上转型:子-->父(upcasting)又被称为自动类型转换: Animal a = new cat () ;l

下转型:父--->(downcasting)又被称为强制类型转换:cat c = (cat)a;需要添加强制类型转换符。

什么时候需要向下转型?

需要调用或者执行子类对象中特有的方法-必须进行向下转型,才可以调用。

向下转型有风险吗?

容易出现ClassCastException(类型转换异常)怎么避免这个风险?

instanceof运算符判断true或false,例如用if(c instanceof cat)如果是cat类判断为true,继续向下执行其中cat的子类独有方法。反之,直接就不执行后续代码,可以在程序运行阶段动态的判断某个引用指向的对象是否为某一种类型。

养成好习惯,向下转型之前一定要使用instanceof运算符进行判断。

不管是向上转型还是向下转型,首先他们之间必须有继承关系,这样编译器就不会报错。

什么是多态。

多种形态,多种状态,编译和运行有两个不同的状态。

编译期叫做静态绑定。

运行期叫做动态绑定。Animal a = new cat() ;

//编译的时候编译器发现a的类型是Animal,所以编译器会去Animal类中找move()方法/找到了,绑定,编译通过。但是运行的时候和底层堆内存当中的实际对象有关

/真正执行的时候会自动调用"堆内存中真实对象"的相关方法。

a. move () ;

多态的典型代码:父类型的引用指向子类型的对象。(java中允许这样写代码!!! )

需要调用或者执行子类对象中特有的方法-必须进行向下转型,才可以调用。

什么时候必须进行向下转型?

调用子类对象上特有的方法时。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值