C++ public 继承语义

c++中类的继承关系有public 继承、protected继承、private继承三种。对于public inheritance应该说是面向对象编程中用得最多的,也是精华所在。

1、公有继承意味着is a kind of 的关系。

即任何派生类对象is a kind of 基类对象,任何出现基类对象的地方都应该允许派生对象去实例化它。这也是针对接口编程的理论基础,在系统高层,我们不应该针对具体类编程而应该针对抽象的接口编程。这样才可以保证程序的可扩展性,做到对修改关闭对扩展开放。

看一下简单的示例:

class IDevice
{
public:
 IDevice(void);
 virtual ~IDevice(void);

 //   连接设备
 virtual bool ConnectDevice() = 0;

 //   断开设备
 virtual bool DisconnectDevice() = 0;

 //   获取设备状态
 virtual bool GetDeviceStatus() = 0;

 //   获取数据
 virtual bool GetDeviceData(BYTE *piByteData, DWORD &pidwLength) = 0;

/// ....
};

// 串口设备

class CDeviceSerial:public IDevice

{

CDeviceSerial()

// ...

}


// 网口设备

class CDeviceSocket: public IDevice

{

CDeviceSocket();

}

// ...

之后系统中用的各种设备均继承以上基类,这样在应用上层不需要关心具体通信协议时就完全可以针对抽象的设备接口编程,

使用特定的设备对象实例化抽象抽象设备,而不需要关心设备具体的工作方式。实现了高层模块不依赖底层模块而只依赖抽象,

当然,对系统进行正确的建模抽象是最重要的一步。在这里,体现了public继承的is a kind of 语义,任何出现基类对象的地方都应该可以使用派生类对象实例化它。以后业务需求变了,只需要重写一个派生类即可,高层逻辑应该是不需要变动的。

简单的public 继承实际上包含了接口继承和实现继承。

在上述抽象设备接口中是纯虚函数,以为着派生类只继承基类的函数接口,自己必须实现它,否则该派生类还是一个抽象类。

对于virtual 函数而不是pure virtual函数,派生类继承该函数的接口和一份基类的默认实现,必要时可以重写它。

而对于基类的non-virtual函数,意味着派生类绝不应该重写它,也就是一种实现继承,派生类中可以利用基类已实现的功能实现新的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值