同人星球BBS -> 基础编程 -> [求助一個問題]什麼是"繼承"? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

櫻葉 06-04-21 20:16

有關於一個類(class)中將某變數給繼承過去至另一個類?...不太懂...~_~||

另外我還想知道變數當了friend以後該如何使用呢?

littlewater 06-04-21 21:05
怎么说好呢?
理论性的东西我说得不太明白的:
努力下巴:)

我个人认为就是不但复制了一个类的变量和函数,而且可以额外新增一些类功能,并且不需要重写现有的代码:

还是举例容易:注意我没有考虑规范,一般不推荐以下的写法哦!
一个不使用继承的类的方式:
class Fly
{
public :
  int pos ;
  int speed ;
  void move() { pos+=speed; ... } // 实作具体代码
  void draw() { ... }
} ;

class SuperFly
{
public :
  int speed ; // 重复的设置
  int addspeed ;
  void move() { pos+=speed; speed+=addspeed; } // 实作具体代码
  void draw() { ... } // 完全重复的绘制代码当然你可以选择CTRL+C CTRL+V
} ;

然后如果对第二个SuperFly使用继承:

class SuperFly : public Fly
{
public :
  int addspeed ; // 仅定义新增的代码即可
  void move() {} // 重定义覆盖了父类的方法
} ;

另外为什么CTRL+C CTRL+V不好,举个简单的例子好啦如果你有一个fly和N个fly的子类,那么如果父类的DRAW变化了,那么你需要改动的代码数量是N+1次哦!
本质上和为什么使用GET SET一个道理

櫻葉 06-04-24 15:28
好抽象~_~....意思就是說使用繼承不用再複製而只需要重新定義父類得副程式吧?

如果我的理解沒有錯誤...那原本的父類的"原副程式"還可以使用嗎?(應該可以吧)

反而是多了個可以用的子類?的意思?..

我太笨了阿...搞不懂@_Q....

littlewater 06-04-24 22:38
利用作用域操作符:
比如:
Base::Fly()
Derived::Fly() 可以显示指定

(另外也可以用虚函数^^)

minoru 06-05-03 00:16
Quote:
引用第2楼櫻葉06-04-24 15:28发表的“”:
好抽象~_~....意思就是說使用繼承不用再複製而只需要重新定義父類得副程式吧?

如果我的理解沒有錯誤...那原本的父類的"原副程式"還可以使用嗎?(應該可以吧)

反而是多了個可以用的子類?的意思?..
.......

就是这个意思

littlewater 06-05-04 08:08
Quote:
引用第4楼minoru06-05-03 00:16发表的“”:

就是这个意思


楼上的,这个回复是不是有点让人误解啊? 

卿卿雅儿 06-05-09 00:20
这个东西要解释清楚比较困难.........
如果以开发游戏来举例的话

定义一个基类 "作战单位":
包括如下变量: int m_hp,m_mp,m_ap,m_dp
包括如下函数
build()
destory()
move()
attack()

然后定义如下几个类,它们继承自"作战单位":
class 机枪兵
class 坦克
class 飞机
这些类自动就有"作战单位"类的方法和变量了,不需要再写(如果必要,也可以重写----比如坦克的attack函数和机枪兵的就不一样)
一个典型的用法是:因为所有用到基类对象的地方都能用派生类的对象(但反之不行)这使得我们在编程时不用考虑最后进来的具体是哪种单位,直接按照"作战单位"处理,进来的是坦克也好飞机也好都无所谓----我处理的是"作战单位",只要进来的是"作战单位"派生出来的类对象即可(这就是所谓的多态了)

这之间的函数调用关系和可见性比较复杂,去找本书看吧

littlewater 06-05-09 07:58
小雅,叶叶就是看不懂书来问的~

可以的话举个方便易懂的例子^^

櫻葉 06-05-15 23:43
其實大家這樣講我已經懂了8成了....謝謝各位~

仔細想想這問題丟這兒要做什麼OTZ...沒辦法...這裡沒有編程區..

不過我又要開新貼來討論個我一直搞不懂的東西了..OTZ

031316 07-08-17 11:30
子类继承父类一些属性,相当于遗传了父类的属性,但并不只是只有这些属性。这是我研究软件工程的理解

bbqz007 08-01-25 04:51
继承不能乱用,提到继承,最基本实用的就是继承抽象类晚绑定。
Friend并不是所有面向对象语言都支持的,因为Friend就是跨越封装边界的访问权限。
不知道为什么要了解这个。


查看完整版本: [-- [求助一個問題]什麼是"繼承"? --] [-- top --]

Powered by PHPWind v5.3 Code © 2003-05 PHPWind
Time 0.052907 second(s),query:4 Gzip enabled

You can contact us