关于类继承的问题

bestmai 2002-11-12 11:49:06
一个图形的基类,如CFigure,一个圆的类CCircle,一个椭圆的类CEllipse,继承的时候是应该CEllipse继承CFigure,CCircle继承CEllipse,还是CCircle继承CFigure,CEllipse继承CCircle呢?还是CCircle、CEllipse都继承CFigure呢?

感觉上好像应该是CFigure--CEllipse--CCircle,但描述椭圆要用长半轴和短半轴,而圆只需要用半径就可以了,这样又好像应该是CFigure--CCircle--CEllipse

那应该是怎样的呢?thx
...全文
24 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestmai 2002-11-12
  • 打赏
  • 举报
回复
但是如果椭圆继承圆,只有需增加一个成员变量。而圆继承椭圆,椭圆的一个成员变量就没用了。但从感觉上,又应该是圆继承椭圆
ufo00 2002-11-12
  • 打赏
  • 举报
回复
我觉得是圆要继承椭圆,因为圆是椭圆的一个特例!圆的长短轴相等!!!!
iamxia 2002-11-12
  • 打赏
  • 举报
回复
按照常理:

椭圆继承圆,圆继承图形
Nepton 2002-11-12
  • 打赏
  • 举报
回复
园当然要继承椭圆,因为园是椭圆的一个特例!园的长短轴相等!!!!
bestmai 2002-11-12
  • 打赏
  • 举报
回复
谢谢各位的意见

另:打惯了,C for Class
陈硕 2002-11-12
  • 打赏
  • 举报
回复
同意“Circle、Ellipse都继承Figure”,或者“中心对称图形”继承“图形”,然后“圆”和“椭圆”继承“中心对称图形”

另:为什么喜欢在class name前加上'C'??
SHIZUMARU 2002-11-12
  • 打赏
  • 举报
回复
“圆形”和“椭圆”都继承自“图形”,两者处于并列关系。

在描述椭圆的时候,会使用“中心点”和“长轴”、“短轴”三个变量;而描述圆形只需要“中心点”和“半径”两个变量。如果你让“圆形”继承自“椭圆”,那么就必须用其他的方法保证长、短轴始终相等。这会造成一些非常麻烦的问题。而让椭圆继承自圆形很明显是不行的:你怎么能获取椭圆的半径呢?

或者,如果要想避免“中心点”这个信息被重复,可以让“中心对称图形”继承“图形”,然后“圆”和“椭圆”继承“中心对称图形”。
maofeng206 2002-11-12
  • 打赏
  • 举报
回复
圆类CCircle应该继承图形基类CFigure。
首先,如果CEllipse从CCircle继承,违反常规逻辑。
如果园CCircle从CEllipse继承,CCircle必须能处理CEllipse对象的数据(破坏基类的封装性),否则会导致某些基类函数不再可用。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧