分享

C++之继承方式

 昵称70747151 2020-07-03

继承的一般语法为:

class 派生类名:[继承方式] 基类名{
    派生类新增加的成员
};

public、protected、private 修饰类的成员

继承方式限定了基类成员在派生类中访问权限,包括public,private,protected。这是个可选项,如若不指定,则默认为private(成员变量和成员函数默认也是 private)。

类的成员访问权限依次是public->protected->private。public可通过对象来访问,private不可以。

protected与private类似,也不可以通过对象访问。但是当存在继承关系时,protected 和 private 就不一样了:基类中的 protected 成员可以在派生类中使用,而基类中的 private 成员不能在派生类中使用。

public、protected、private 指定继承方式

不同的继承方式会影响基类成员在派生类中的访问权限。

public方式:

基类所有的public成员在派生类中是public属性

基类所有的protetcd成员在派生类中是protected属性

基类所有的private成员在派生类中是private属性

protected方式:

基类所有的public成员在派生类中是protected属性

基类所有的protetcd成员在派生类中是protected属性

基类所有的private成员在派生类中不可使用

private方式:

基类所有的public成员在派生类中是private属性

基类所有的protetcd成员在派生类中是private属性

基类所有的private成员在派生类中不可使用

 分析:

1)基类成员在派生类中访问权限不得高于继承方式中指定的权限。例如,当继承方式为protected时,那么基类成员在派生类中的访问最高权限最高也为priotected,高于protected的会降级为protected,但低于protected不会升级。再例如,当继承方式为public时,那么基类成员在派生类中的访问权限将保持不变。

也就是说,继承方式中的public,protected,private是用来指明基类成员在派生类中最高访问权限的。

2)不管继承方式如何,基类中private成员在派生类始终不能使用。

3)如果希望基类的成员能够被派生类继承并且毫无障碍的使用,那么成员只能声明为public或protected。只有那些不希望在派生类中使用的成员才声明为private。

4)如果希望基类的成员既不向外暴露(不能通过对象访问),还能再派生类中使用,那么只能声明为protected。

由于 private 和 protected 继承方式会改变基类成员在派生类中的访问权限,导致继承关系复杂,所以实际开发中我们一般使用 public。

改变访问权限

使用using关键字可以改变基类成员再派生类中的访问权限。例如将public改为private,将protected改为public。

注意,using只能改变基类成员中的public和protected成员的访问权限,不能改变private成员的访问权限,因为基类的private成员再派生类中是不可见的,根本不可能使用,所以基类的private成员再派生类中无论如何都不可能访问。

语言 方法
3995 3wMx8
d2chf
  • 听歌一小时赚150「教程分享」抖音赚钱项目
  • 5040 2010.05.20 12-23-29

      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多