《Think in Java》笔记摘要 ---理解多态

《Think in Java》笔记摘要 —理解多态

首先看一下什么是多态:Java的应用变量有两个类型,一个是编译时类型,一个是允许时类型。编译时类型就是在 声明类型时使用的类型,而运行时类型是它实际变量的类型。因为Java允许向上转型,所以会出现编译时类型与运行时类型不同的情况,也就是多态

什么是向上转型?

答:子类可以转换为父类。如果有 B extends A ,那么A b = new B(); 是没有错误的。而且向上转型并不会改变任何数据,在运行时它就是一个B类型的变量。但是在编译的时候会检查调用的方法是否存在,假如B有一个方法C();而A中没有,那么在A b = new B();后b.C();是无法通过编译的。

那么为什么要用多态呢?它有什么好处?

想象一下,你需要做一些关于介绍汽车的方法。首先是奔驰,你做了一个introduceBenz(Benz car);在方法里调有car.money();car.engine();等方法去介绍了奔驰的方方面面。然后你又继续做了一个介绍宝马的方法,你会发现两个方法相似度非常的高,可能就是方法名和car的类似不一样而已。再想想你还得做很多很多种汽车的介绍。一路复制过去?

想想我们的继承和多态,不管是什么牌子的汽车它都是汽车,所以我们完全可以码一个父类,一个被所有汽车继承的父类Car。所以我们只需要写一个函数就能完成对所有品牌汽车的介绍。方法introduceCar(Car car); 同样在里面调用各种函数,每中汽车都可以使用它,它也能满足所有汽车的介绍要求。

最后再补充一个 instanceof 运算符

如果 A(应用变量) instanceof B(类)是true,就说明A是B的一个实例或者是其子类,实现类的实例。为什么A可以向上转型为B类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值