Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317313
  • 博文数量: 26
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 915
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-20 14:54
文章分类

全部博文(26)

文章存档

2010年(3)

2009年(14)

2008年(9)

我的朋友

分类: C/C++

2009-08-06 09:53:07

以下内容整理自《程序员面试宝典》,重点讨论一下C++中三种继承方式的区别。
1, 公有继承(public)
基类成员对其对象的可见性与一般类及其对象的可见性相同,public成员可见,protected和private成员不可见。
基类成员对派生类的可见性对派生类来说,基类的public和protected成员可见:基类的public成员和protected成员作为派生类的成员时,它们都保持原有状态;基类的private成员依旧是private,派生类不可访问基类中的private成员。
基类成员对派生类对象的可见性 对派生类对象来说,基类的public成员是可见的,其他成员是不可见的。
所以,在公有继承时,派生类的对象可以访问基类中的public成员,派生类的成员方法可以访问基类中的public成员和protected成员。
2, 私有继承(private)
基类成员对其对象的可见性与一般类及其对象的可见性相同,public成员可见,其他成员不可见。
基类成员对派生类的可见性对派生类来说,基类的public成员和protected成员是可见的:基类的public成员和protected成员都作为派生类的private成员,并且不能被这个派生类的子类所访问;基类的私有成员是不可见的:派生类不可访问基类中的private成员。
基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。
所以在私有继承时,基类的成员只能由直接派生类访问,无法再往下继承。
3.保护继承(protected)
保护继承与私有继承相似,基类成员对其对象的可见性与一般类及其对象的可见性相同,public成员可见,其他成员不可见。
基类成员对派生类的可见性,对派生类来说,基类的public和protected成员是可见的:基类的public成员和protected成员都作为派生类的protected成员,并且不能被这个派生类的子类所访问;基类的private成员是不可见的:派生类不可访问基类中的private成员。
基类成员对派生类对象的可见性对派生类对象来说,基类的所有成员都是不可见的。
所以,在保护继承时,基类的成员也只能由直接派生类访问,而无法再向下继承。
C++支持多重继承。多重继承是一个类从多个基类派生而来的能力。派生类实际上获取了所有基类的特性。当一个类 是两个或多个基类的派生类时,派生类的构造函数必须激活所有基类的构造函数,并把相应的参数传递给它们 。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lazy_tiger/archive/2008/03/17/2192018.aspx
 
PS:
private域通常定义成该类的数据部分,public域称该类的接口部分,protected域通常在这里定义的方法或数据成员通常留给子类重载。  
  如果一个类以PUBLIC方式继承,那么该类各上述三个域部分不变,public域仍然是public域,private域仍然是private域,protected域仍然是protected域,基类中的私有成员不能被访问;如果以private方式继承则基类的protected和public部分将被视为私有部分,子类可以对基类的protected   and   public进行访问,但不能访问私有部分;如果以protected继承,那么基类中的public   and   protected   部分在子类中被视为protected部分,基类中的public   and   protected部分可以被访问,但私有部分不可以访问。并且三种继承方式,public权限最大,private:最小,protected:居中。
阅读(1400) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~