java的多态

本文介绍了Java中的多态概念,包括多态的定义、形式、优点、存在的必要条件及其实现方式。通过实例展示了多态如何使得代码更具灵活性和可扩展性,以及在实际编程中的应用。
摘要由CSDN通过智能技术生成

前言

面向对象形成设计的三大支柱是封装、继承和多态。本节内容将介绍多态。

一、什么是多态?

  1. 多态(polymorphism),源于希腊文字,意思是“多种形式”。Java中的多态是指基类对象访问派生类重写的方法,通俗来说,就是使用父类对象的地方都可以使用子类的对象。多态是一种循环调用基类对象,访问不同派生类的方法,它的实参是派生类,形参是基类。继承是多态实现的基础。

  2. 子类型和父类型。一个类实际上定义了一种类型。子类定义的类型称为子类型(subtype), 而父类定义的类型称为父类型(supertype)。

  3. 多态有两种形式:

  • 引用的多态
  • 方法的多态:覆盖、重载

多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
在这里插入图片描述

二、多态性(Polymorphism)

  • 多态性是采用多种形式的能力。在 Java 中,引用变量可以是多态的,即它可以存放不同类对象的地址,只要这些类是它声明的类的派生类即可。 我们可以用 exam 变量存放一个 FinalExam 对象的地址。 这条语句创建了一个 FinalExam 对象,并且把对象的地址存放在 exam 变量中。
Gradedactivaity exam = new FinalExam(50.7);
  • 基类型的引用变量指向派生类。
  • 如果基类的方法被重写了,那么调用哪个方法是由对象的类型决定,而不是引用变量的类型来定义。
  • 不能把基类对象赋值给派生类的引用变量。

三、多态的优点

  • 消除类型之间的耦合关系
  • 可替换性
  • 可扩充性
  • 接口性
  • 灵活性
  • 简化性

四、多态存在的必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

注意:方法的重写和重载是不同的。重栽意味着使用同样的名字但是不同的签名来定义多个方法。重写意味着在子类中提供一个对方法的新的实现。

五、多态的实例

  • 继承关系使一个子类继承父类的特征,并且附加一些新特征。子类是它的父类的特殊化,每个子类的实例都是其父类的实例,但是反过来就不成立。例如:每个圆都是一个几何对象,但并非每个几何对象都是圆。因此,总可以将子类的实例传给需要父类型的参数。

实例 1 :
方法 displayObject (第 12 行〉具有 GeometricObject 类型的参数。可以通过传递任何一个 GeometricObject 的实例(例如:在第 5-8 行的 new CircleFromSimpleCeometricObject(1,“red”.false)和 new RectangleFromSimpleGeometricObject(1,1,“black”,false))来调用 displayObject。

public class PolymorphismDemo {
   
  /** Main method */
  public static void main(String口 args){
   
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值