首页
登录 | 注册

C++ public private protected三种继承区别

1. 公有继承

当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中保持不变,而基类的私有成员不可访问。

即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有和保护成员,派生类的其他成员可以直接访问它们;

其他外部使用者只能通过派生类的对象访问继承来的公有成员;

而无论派生类的成员还是对象都无法访问基类的私有成员。

2. 私有继承

当类的继承方式为私有继承时,基类的公有和保护成员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。

即基类的公有成员和保护成员被继承到派生类中作为派生类的私有成员,派生类的其他成员可以直接访问它们;

但是在类外部通过派生类的对象无法访问;

而无论派生类的成员还是对象都无法访问基类的私有成员。

若果再进一步派生的话,基类的全部成员就无法在新的派生类中直接被访问。因此,私有继承之后,基类的成员再也无法在以后的派生类中发挥作用了,实际就等价与终止了基类功能继续派生,出于这种原因,一般情况下私有继承很少用。

3. 保护继承

当类的继承方式为保护继承时,基类的公有和保护成员都以保护成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。

即基类的公有成员和保护成员被继承到派生类中作为派生类的保护成员,派生类的其他成员可以直接访问它们;

但是在类外部通过派生类的对象无法访问;

而无论派生类的成员还是对象都无法访问基类的私有成员。

比较保护继承和私有继承,可以看出实际上在直接派生类中,所有成员的访问属性都是完全相同的。但是,如果派生类继续作为新的基类,继续派生时,二者区别就出现了。在新的派生类中基类成员作为保护成员或私有成员,依然可以在新类中访问。这里,很好的体现了proteected继承的优点。

既能实现成员隐藏,又能方便继承,实现代码的高效重用和扩充。

 

无论哪种继承方式,基类的公有和保护成员都可以被派生类的成员访问。

无论哪种继承方式,基类的私有成员都不可以被派生类的成员和对象访问。

只有公有继承时,基类的公有成员才可以被派生类的对象访问。

在被继承时,基类的保护成员及和公有成员行为一致。

在被类的对象访问时,保护成员和私有成员的行为一致。


相关文章

  •      面向对象编程(OPP:Object-oriented programming)基于三个基本的概念:数据抽象.继承和动态绑定.之前在学习"基于对象的编程"时已经了解到了数据封装和抽象的作用,今天学习的这部分主要来 ...
  • 一.学习目标 a)        类和对象 b)       构造方法 c)        对象的创建和使用 d)       信息的封装和隐藏 e)        package语句/import语句 二.理解面向对象的概念 a)     ...
  • Java基础14:离开IDE,使用java和javac构建项目
    这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Ja ...
  • Java基础16:Java多线程基础最全总结
    这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Ja ...
  • "作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的.事实上,Java本来就是从C++衍生出来的." 然而,C++和Java之间仍存在一些显著的差异.可以这样说,这些差异代 ...
  • 本节主要介绍Java反射的原理,使用方法以及相关的技术细节,并且介绍了关于Class类,注解等内容. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人博客: https: ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.014 s.
京ICP备10005923号