Java复习-16-多态性

多态性

在Java中对于多态性有两种实现的模式:

方法的多态性

方法的重载:同一个方法名称可以根据传入的参数类型和个数的不同,进行不同的处理。
方法的覆写:同一个方法可能根据使用子类的不同,由不同的实现。

对象的多态性

父子实例之间的转换处理,有两种模式:

对象向上转型

语法

父类 父类实例 = 子类实例、自动完成转换; 即子类只有一个父类,无歧义,直接转。

功能(使用场景)

可以对参数进行统一的设计,如下

public class JavaDemo {
    public static void main(stringargs[]) {
        fun(new DataBaseMessage ()) ; //DataBaseMessage 是 Mesrage的一个子类
        MessaMessafun(new WebServerMessage ()) ; // WebServerMessage 也是 Mesrage的一个子类
public static void fun(Mesrage msg){ // 不管传递的是哪个类型的子类都能实现接收,且覆写的方法依旧有用
    msg.print()
}

上面的代码,对于许多子类公用的同一个方法而言,将参数定位为他们共同的父类,可以提高代码的可拓展性。(当然,你可以选择对每个子类都分别写一个重载的方法,但是如果子类数量过多,该方法不利于扩展。)

对象向下转型

语法

子类 子类实例 = (子类) 父类实例、强制完成转换; 即父类向下走的时候,可能有很多子类,使用要在前面有指定是哪个子类。

功能(使用场景)

为了使用子类的特殊定义,即子类实例化对象在一般情况下是父类类型,但需要时可以转化为子类类型来使用。

注意

在使用向下转型前,一定要首先发生向上转型。因为如果直接用一个父类实例化的对象,其并不清楚向下的子类的存在。

instanceof 关键字

为了保证向下转型的正确性,故需要在转型之前判断某个实例是否是某个类的对象,此时就需要通过 instanceof 关键字来进行判断。
语法: 对象 instanceof 类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值