Java基础之多态的运用

什么是多态?


多态按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。

在现实生活中也有很多例子。以交通工具为例,交通工具按种类可以分为车、船、飞机等种类,而这些交通工具都有不同的移动方式,比如车在路上开,船在水里开,飞机在天上开灯,这就是不同交通工具在同一个行为上的多态。


多态实现的必要条件


  • 继承
  • 重写
  • 父类引用指向子类对象

接下来用交通工具的不同的移动方法举个例子。

先定义一个交通工具类Vehicle,类中定义一个移动方法move()。

 之后定义一个Car类继承交通工具Vehicle,同时重写move方法。

 

 这里来说说个人认为为什么要继承和重写是必要条件:面向对象五大原则中有一个依赖倒置原则,即抽象不依赖与具体,具体不依赖于抽象。既然要实现多态,则必定有一个作为"抽象"类来定义“行为”,以及若干个作为"具体"类来呈现不同的行为形式或形态。

至于重写就是为了让方法有不同的表现形式,也是多态的根本。

最后是父类引用指向子类。代码示例如下:

 面向对象五大基本原则中有一条里氏替换原则,简单说就是父类可以调用子类,子类不能调用父类。提个概念,编译器类型指的是‘=’左边的类型,运行期类型指的是‘=’右边的类型。当有继承关系时,可能发生编译期类型和运行期类型不同的情况,即编译期类型是父类类型,运行期类型是子类类型。


多态的实现途径


  • 重写
  • 重载
  • 接口

多态的弊端


不能使用子类特有的成员属性和子类特有的成员方法。

 若想在执行过程中使用car特有的属性方法,可以将这个父类引用再强制转换为Car类型。


 多态的优点


  • 消除类型之间的耦合关系

  • 可替换性

  • 可扩充性

  • 接口性

  • 灵活性

  • 简化性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

才疏学浅的小缘同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值