本帖最后由 keer_zu 于 2014-10-29 09:29 编辑
xlsbz 发表于 2014-10-28 08:04 
你有时间可给出c例子。
我好好看看csdn后,再回复。
接口目的就是当用户需求改变后,减少内部代码更改。
基本是这个意思,非面向对象也可以做到这一点,但是面向对象和非面向对象有何区别?就是体现在“内部改变”这部分,面向对象的继承和多态保证了内部改变时,是可复用的,继承保证了扩展,多态保证了同样的接口提供不同的操作。
打个比方:
现在有一个“接口”(类):人,它定义了方法:”基本体检“(Ren.Tijian(Ren *ren));
它只是一个接口,没有具体的实例(在c++里面分别体现在:虚拟类和纯虚函数上);
然后分别由“人”派生出“男人”和“女人”(继承),它们分别实现了”基本体检“这个方法(两者分别实现各自的基本流程和内容,这里体现了多态)。
这时候“男人”由可派生出“成年男子“和”未成年男子“,它们继承了”男人“,同时分别增加了”附加体检项目“这个方法(比如成年男子要查那个xx腺,呵呵,具体方法为:ChengnianNanRen.fujia(ChengnianNanRen *cnnr))。(女人分类方法类似:"成年女子","未成年女子",如:ChengnianNvRen.fujia(ChengnianNvRen *cnnvr))
这个时候,如果分别新建一个"成年男子":范统和"成年女子":翠花,那么可以通过调用Ren.Tijian(&范统)和Ren.Tijian(&翠花)分别实现对两个人的基本体检。由于多态性,具体会分别调用适合各自的方法。
但是无法在Ren这个类的层面调用”附加体检“这个方法,因为这是扩展出来的,只能在各自的层面实现,比如:ChengnianNanRen.fujia(&范统)和ChengnianNvRen.fujia(&翠花)
@yyy71cj @xlsbz
|