多态

将一个父类的引用指向一个子类对象,称为向上转型(upcasting),自动进行类型转换。

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。

此时通过父类引用变量无法调用子类特有的方法。

对象instanceof类或接口

该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false。在强制类型转换之前通过instanceof运算符检查对象的真实类型,在进行相应的强制类型转换,这样就可以避免类型转换异常,从而提高代码的健壮性。

多态的作用是消除类型之间的耦合关系。也可以管多态叫做动态绑定(运行时绑定、后期绑定)
在Java编程中,有一种行为叫做“向上转型”,即将某个对象的引用视为对其基类类型的引用,如:Person p = new Manager();
但Manager和Employee都只是打工的,都需要领工资getSalary,如果我们写的话,会有getSalary(Manager m)和getSalary(Employee e)两个方法,那如果再来新的级别,例如BigManager怎么办,继续添加新的方法?
NO!我们不如写这样一个方法getSalary(Person p)。这样无论什么级别的员工要领薪水,都是出自他作为一个人类的行为,可能这个比喻不太恰当,大家理解就好。
但是你怎么知道这个Person的级别呢?没关系,JVM会帮你搞定这件事情

Java的多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。
注:但是根据《Java编程思想》中的意思是仅有运行时多态,也就是说重写和多态有关,重载和多态无关。严格意义上的多态就是运行时绑定
编译时多态:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。
运行时多态:由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值