本篇文章包含了笔者对类的多态特性的一些个人理解以及一些显示类的多态特性的具体程序。本文将会以java来呈现类的多态特性。
一、对多态特性的理解
类的多态特性与类的继承特性紧密联系,这一特性应用在父子类中。我们知道,类的子类具备着父类的特征与自己的特殊特征。例如,我们可以说长方体是对矩形在空间上的延申。长方体的底面积便是被延申的矩阵的面积。我们默认定义一个area属性来刻画长方体与矩形,并将长方体的area属性默认定义为底面积,这样长方体和矩形便可以用同一属性来具体刻画。并且这一属性是由矩阵发展到长方体的,因此如果有get_area函数的参数为矩形,我们既可以用它来求取输入矩形的面积,同时它也兼容更高维的长方体。这便是类的多态的特性,由于父类的抽象程度更高,导致它具有较于子类更好的兼容性。同时,我们可以注意到,子类并不向上兼容父类,例如长方体的高属性是矩阵所不具有的,由于这种可能性的存在,以子类为参数的函数不能向上兼容父类。
二、多态特性在java中的实例
引用自《java语言程序设计与数据结构 基础篇》(梁勇著)
输出结果如下:
上图中的GeometricObject为Circle类与Rectangle类的父类,可以看到displayObject函数以GeometriObject类对象为参数兼容了Circle类对象与Rectangle类对象。