vc中什么时候需要从已有的类中派生出新类?

时间:2021-09-16 18:52:47
学vc3个多月了吧,现在最大的疑惑就是什么时候需要从已有的类中派生出新的类,我看的教材书上很少有需要派生新类的,但是实例开发的书上经常派生新类.
感觉模模糊糊,总好像有层纸没有捅破.

大家一般都是在什么情况下派生新类的啊?还请不吝赐教,感激涕零!

14 个解决方案

#1


一般在有总--分或粗--精结构的时候派生新类。

比如我们需要矩形类、椭圆类、多边形类

那么就新建一个面类,它有:名称,类型,填充颜色等公共属性,和(可重载的)绘图等公共方法

然后再派生出矩形类、椭圆类、多边形类

你可能问为什么不直接建矩形类、椭圆类、多边形类呢?

首先,假如我们要引入图层,这就涉及到了图层的上移下移,在这种情况下,我们希望将所有元素存储在一个数组(容器)里,上面的派生类就有了独特的优势

然后,假设这时我们需要加入一个圆形类,我们是不是要重新写一个类呢?只要从椭圆类里派生就可以了。

最后,使用了继承,能够使程序的结构条理清楚,可读性强,可扩展性强。

我也学习VC不久,上面是一点体会,不要见笑~

#2


当你需要在原有类的基础上进行功能扩展的时候

#3


当你发现原有类的功能不够多需要在此基础上添加功能时时,就需要派生出新类了。

#4


在父类的基础上进行细化、特例化。例如从human中派生出man和woman,后者是前者的特例,对前者进行细化,实现自己的个性功能

#5


难道楼主没学过面向对象?

#6


这个有规律吗?当你需要的方法没有时您就可以派生自己的类了

#7


编你的程序必定要派生类,改造类实现你设定的功能
书上例子一样派生新类,你可能没注意

#8


任何时候!
只要你觉得有需要,你就可以派生。
甚至,你觉得闲的无聊的时候,也可以派生一个子类,里面一行代码都没有,也是 OK 的。
关键是看你的功能,现有的类是不是能满足你的要求。如果能,那 OK,不用派生,
如果不能,选择一个你认为最接近的父类来派生。

#9


引用 2 楼 Gothic_girl 的回复:
当你需要在原有类的基础上进行功能扩展的时候


我为什么不在父类添加新的成员函数以实现功能的扩展,而非要派生新类呢?

#10


首先,假如我们要引入图层,这就涉及到了图层的上移下移,在这种情况下,我们希望将所有元素存储在一个数组(容器)里,上面的派生类就有了独特的优势 

这个解释说的很形象

#11


一般不要派生新类,对新手先把已有的类用好。等到那一天已有的类不能满足你的要求时,从一个基本可以使用的类,派生你的新类。

#12


已有功能不能满足你的需求 需要重新改写或派生存在的类  不过优先使用组合而不是继承

#13


能够不派生就不派生。
继承是毒药,万到不得已的时候不用。
组合好于继承
能够用结构搞定就别用类。
能够不用结构就不用结构,总之,奥卡姆剃刀法则
能够用10行代码搞定的事情别用50行去封装,就为了体现面向对象,设计模式,那不值得。适当的方法用在适当的地方。
1楼的例子是个坏的引导,很多例子都这么说,其实,java才这么做,因为java只有类操作能够实现,你用的是c,完成这样的任务灵活得多,不必非得派生一大堆类。

#14


同意6楼8楼的说法,要不要派生新类完全看你个人觉得是否需要,看你的编程习惯,另外13楼说得对,1楼的引导的确不好,那都是教科书上让学生了解面向对象才举的例子,并不一定非得那样做

#1


一般在有总--分或粗--精结构的时候派生新类。

比如我们需要矩形类、椭圆类、多边形类

那么就新建一个面类,它有:名称,类型,填充颜色等公共属性,和(可重载的)绘图等公共方法

然后再派生出矩形类、椭圆类、多边形类

你可能问为什么不直接建矩形类、椭圆类、多边形类呢?

首先,假如我们要引入图层,这就涉及到了图层的上移下移,在这种情况下,我们希望将所有元素存储在一个数组(容器)里,上面的派生类就有了独特的优势

然后,假设这时我们需要加入一个圆形类,我们是不是要重新写一个类呢?只要从椭圆类里派生就可以了。

最后,使用了继承,能够使程序的结构条理清楚,可读性强,可扩展性强。

我也学习VC不久,上面是一点体会,不要见笑~

#2


当你需要在原有类的基础上进行功能扩展的时候

#3


当你发现原有类的功能不够多需要在此基础上添加功能时时,就需要派生出新类了。

#4


在父类的基础上进行细化、特例化。例如从human中派生出man和woman,后者是前者的特例,对前者进行细化,实现自己的个性功能

#5


难道楼主没学过面向对象?

#6


这个有规律吗?当你需要的方法没有时您就可以派生自己的类了

#7


编你的程序必定要派生类,改造类实现你设定的功能
书上例子一样派生新类,你可能没注意

#8


任何时候!
只要你觉得有需要,你就可以派生。
甚至,你觉得闲的无聊的时候,也可以派生一个子类,里面一行代码都没有,也是 OK 的。
关键是看你的功能,现有的类是不是能满足你的要求。如果能,那 OK,不用派生,
如果不能,选择一个你认为最接近的父类来派生。

#9


引用 2 楼 Gothic_girl 的回复:
当你需要在原有类的基础上进行功能扩展的时候


我为什么不在父类添加新的成员函数以实现功能的扩展,而非要派生新类呢?

#10


首先,假如我们要引入图层,这就涉及到了图层的上移下移,在这种情况下,我们希望将所有元素存储在一个数组(容器)里,上面的派生类就有了独特的优势 

这个解释说的很形象

#11


一般不要派生新类,对新手先把已有的类用好。等到那一天已有的类不能满足你的要求时,从一个基本可以使用的类,派生你的新类。

#12


已有功能不能满足你的需求 需要重新改写或派生存在的类  不过优先使用组合而不是继承

#13


能够不派生就不派生。
继承是毒药,万到不得已的时候不用。
组合好于继承
能够用结构搞定就别用类。
能够不用结构就不用结构,总之,奥卡姆剃刀法则
能够用10行代码搞定的事情别用50行去封装,就为了体现面向对象,设计模式,那不值得。适当的方法用在适当的地方。
1楼的例子是个坏的引导,很多例子都这么说,其实,java才这么做,因为java只有类操作能够实现,你用的是c,完成这样的任务灵活得多,不必非得派生一大堆类。

#14


同意6楼8楼的说法,要不要派生新类完全看你个人觉得是否需要,看你的编程习惯,另外13楼说得对,1楼的引导的确不好,那都是教科书上让学生了解面向对象才举的例子,并不一定非得那样做