面向对象之多态

前言:面向对象的三大特性是:封装、继承、多态。通过三种方法把程序的耦合度降低,传统的印刷术和问题就在于所有的字都刻在同一版面上造成耦合度太高所致,活字印刷术的出现就是利用面向对象的思维克服了传统技术的缺陷。在代码工程中我们吸取几千年前老祖宗的智慧开始用设计模式使得程序更加的灵活,容易修改,并且容易复用。

接下来跟随小编去探索“多态”的奥秘吧~

“多态”用一句简单精炼的话描述是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。

(一)我们先来看一段代码,看看多态思想在代码中的运用:

创建基类person,添加一个虚方法work():


  创建子类teacher,继承person,重写父类person中的虚方法work():


创建子类student,继承person,重写父类person中的虚方法work():


创建子类police,继承person,重写父类person中的虚方法work():


到此,一个基类,三个子类已经创建完成,接下来我们去看看在主函数中多态是如何体现的:


运行结果:


在这个例子中,通过继承,使得per对象数组中的不同的对象,在调用work()方法时,表现出了不同的行为。

(二)abstract  vs   override

接下来我们看一下如何利用抽象实现多态:

还是拿上面的例子,我们不需要使用person这个父类创建对象,它存在的意义就是供子类来继承。所以我们使用abstract来对它进行优化。

步骤:把person父类改成抽象类,work()方法改成抽象方法:


抽象类person添加一个work()抽象方法,没有方法体,也不能实例化。

其他类的代码不变,子类也是用override关键字来重写父类中抽象方法,不过主函数中的代码要稍稍修改一下:


运行结果:


所以从这里我们可以看出使用虚方法还是使用抽象方法实现多态,取决于我们是否需要使用基类实例化的对象。

好啦,以上就是我对于多态的一点点理解,继续加油~~

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值