C++基类和派生类

.基类和派生类关系
任何一个类都有可以派生出上个新类,派生类也可以再派生出新类,因此,基类和派生类是相对而言的。一个基类可以是另一个基类的派生类,这样便形成了复杂的继承结构,出现了类的层次。一个基类派生出一个派生类,它又做另一个派生类的基类,则原来基类为该派生类的间接基类。

基类与派生类之间的关系可以有如下几种描述:

1 派生类是基类的具体化
类的层次通常反映了客观世界中某种真实的模型。例如,定义输入设备为基类,而键盘、鼠标器和数字化板将是派生类,它们关系如图6-3所示,在这种情况下,不难看出:基类是对若于个派生类的抽象,而派生类是基类的具体化。基类抽取了它的派生类的公共牲,而派生类通过增加行为将抽象类变为某种有用的类型。

2 派生类是基类定义的延续
先定义一个抽象基类,该基类中有些操作并未实现。然后定义非抽象的派生类,实现抽象基类中定义的操作。例如,虚函数就属此类情况。这时,派生类是抽象的基类的实现,即可看成是基类定义的延续。这也是派生类的一种常用的方法。

3 派生类是基类的组合
在多继承时,一个派生类有多于一个的基类,这时派生类将是所有基类行为的组合。如上述派生类风扇台灯类就是基类风扇类和台灯类的组合。

例题6-1
下面定义了一个关于交通工具的类
 class vehicle
 {
  int wheels; //轮子数
  float weight; //重量
  public:
  void initialize(int in_wheels, float in_weight);
  int get_wheels( ) {return wheels;}
  float get_weight( ) {return weight;}
  float wheel_loading( ) {return weight/wheels;}
 };
  如果要再定义一个小轿车的类和一个卡车的类,如何实现呢?这里我们就要用到面向对象程序设计的另一个机制--继承。现实世界的物质多种多样,但许多物质都存在着层次关系,这种层次结构是我们找到了描述事物的解决方法。
下面通过继承来派生出小汽车和卡车的类。
 //小汽车的类
 class car : public vehicle
 {
  int passenger_load; //载客数
  public:
  void initialize(int in_wheels, float in_weight, int people = 4);
  int passengers( ) {return passenger_load;}
 };
 //卡车的类
 class truck : public vehicle
 {
  int passenger_load; //载客数
  float payload; //有效负载
  public:
  void init_truck(int how_many = 2, float max_load = 24000.0);
  float efficiency( ); //马力
  int passengers( ) {return passenger_load;}
 };
  说明:上面通过继承从类vehicle中派生出了car和truck两个类。我们把vehicle称为基类,把car和truck称为派生类或子类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值