c++面向对象总结

本文探讨了为何使用面向对象的思想进行编程,主要是为了提高代码的复用性和满足快速开发需求。面向对象的三大特性——封装、继承和多态中,继承和多态被视为面向对象的精髓。通过代码示例展示了如何利用继承实现代码复用。
摘要由CSDN通过智能技术生成

1、为什么要用面向对象的思想去编程?

为了解决缩短开发的时间周期,如何才能缩短开发周期,粘贴复制已有的代码,以前的代码可以修改一下可以直接拿过来用,所以我们要解决的问题就是代码的复用性问题。

如何提高代码的复用性?面向对象的思想,想办法把某些相似相似或者抽象共性的问题直接移植,这就是面向对象的方法。面向对象的产生就是为了提高代码的复用性,满足快速开发的需求。

2、面向对象的精髓?

面向对象包括封装、继承、多态,而继承和多态是面向对象的精髓。

我们的出发点还是提高代码的复用性,而继承可以很直观的体现出来这种特征。对一种类型的所用对象的共性只定义一次,便可以通过继承的方式对基类做无须修改的复用。

比如说我们定义了动物这个大类,我们知道动物有这样的共性,即多以有机物为食料,有神经,有感觉,能运动,假如现在我们要对所有的动物定义一个标明生理特征的方法显示自己的一些特征标签供参观者查看,我们可以在每一类动物类中放置这样一个输出特征标签的函数来表明生理特征,即输出“有神经,有感觉,能运动”,但如果真的为每一种动物去写这样一个表明特征的输出函数,会造成大量没必要的重复,导致效率极低,我们的出发点四提高代码的复用性,那么,我们现在完全可以把这样一个函数放在“动物”这个基类中,通过继承让所有种类的动物都拥有这样具有输出功能的函数,且不做任何修改的继承。这就是继承这种一劳永逸的思想带给我们极大的好处,当我们实现了上述这种非常便捷的继承思想处理问题时,我们在想,我们能不能把所有的问题都归纳成上述这种方式去一劳永逸的便捷的去处理呢?最好是只在基类中写相应的方法,通过继承让其他类直接复用,答案是"NO",
正如世界上没有相同的两片叶子,不管多么类似的对象,它们都有各自的差异性。
我们又要考虑某一类型对象的某些共同特征的差异性,比如说猴类都有毛,但是毛的颜色会有差异,所以在每个对象对定义毛的函数是不同的,如果直接全盘继承基类的同名函数肯定不行,为了便是这种差异化,我们引入了重写机制。当我们尽可能的顾全大局的在基类中放置一些非常通用的函数以供派生类继承使用,从而提高代码的复用性,但是肯定会有个别的有差异的对象不能完全使用继承过来的这个函数,那么,他就会自己定义一个功能非常相似又略有差异的同名函数(同名函数的作用很大意义上是一类相同或者相似操作的标识,这样可以避免在使用接口的时候出现各种功能相同或相似的操作但函数名称却千差万别的情况,给使用者带来困惑,),把基类继承过来的函数屏蔽掉(注意和函数重载的区别),从而很好的解决了个体的细小差异性,而使大部分都可以复用,这就是重写基类。再说说继承这种机制另一个非常好的作用,即代码的可扩展性,不管是基类重写还是派生定义自己的成员,都可以看做是派生类的扩展性。正是这种可扩展性才最大可能的促进了代码的复用性。

那么,又为什么要引进虚函数这种机制呢?
讨论虚函数之前,我们必须清楚面向对象的思想中如何调用子类的特征函数,就是用基类的指针指向派生类对象,然后通过基类指针对象去调用派生类函数。为什么一定要通过基类指针调用子类函数呢?定义派生类指针直接指向自己的函数不是更简单吗?当然不是!!!!!!我们为什么非要用基类指针去指向派生类,然后调用派生类的成员呢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值