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 类

你可能感兴趣的:(编程语言与bug,java,开发语言)