参考: http://www.weixueyuan.net/view/6359.html

 总结:

  子类继承父类,继承方式将限制父类的成员属性在子类中的访问权限,子类访问父类的成员,也需要遵循其成员的访问权限,如 private 修饰的成员只能在当前类中使用,子类不能访问。

  同时父类的成员也是子类的成员,其在子类中的访问权限由父类中的访问权限及继承方式决定。

3) private继承方式

  • 基类中的所有public成员在派生类中均为private属性;
  • 基类中的所有protected成员在派生类中均为private属性;
  • 基类中的所有private成员在派生类中均不可访问。

从基类派生出派生类,派生类继承基类的继承方式有三种:public、protected和private。在未指定的情况下编译器会默认继承方式为protected或private方式。

1) public继承方式

  • 基类中所有public成员在派生类中为public属性;
  • 基类中所有protected成员在派生类中为protected属性;
  • 基类中所有private成员在派生类中不可访问。

具体示例可以参考上一节中的例1,在此就不再重新举例了。

2) protected继承方式

  • 基类中的所有public成员在派生类中为protected属性;
  • 基类中的所有protected成员在派生类中为protected属性;
  • 基类中的所有private成员在派生类中仍然不可访问。

例1:

enum language{cpp, java, python,javascript, php, ruby};

class book
{
public:
void setprice(double a);
double getprice()const;
void settitle(char* a);
char * gettitle()const;
void display();
private:
double price;
char * title;
}; class codingbook: protected book
{
public :
void setlang(language lang);
language getlang(){return lang;}
private:
language lang;
};

本类同样使用上一节中的示例,此时继承方式改为了protected继承,我们再来分析一下codingbook中类成员的属性问题,具体见下表。

codingbook类成员 成员属性 来源
price 不可访问 继承自book类
title 不可访问 继承自book类
lang private codingbook新增
setprice protected 继承自book类
settitle protected 继承自book类
getprice protected 继承自book类
gettitle protected 继承自book类
dispaly protected 继承自book类
setlang public codingbook新增
getlang public codingbook新增

3) private继承方式

  • 基类中的所有public成员在派生类中均为private属性;
  • 基类中的所有protected成员在派生类中均为private属性;
  • 基类中的所有private成员在派生类中均不可访问。

例2:

enum language{cpp, java, python,javascript, php, ruby};

class book
{
public:
void setprice(double a);
double getprice()const;
void settitle(char* a);
char * gettitle()const;
void display();
private:
double price;
char * title;
}; class codingbook: private book
{
public :
void setlang(language lang);
language getlang(){return lang;}
private:
language lang;
};

同样,我们来分析一下本例中的codingbook类中所有成员的成员属性,具体见下表。

codingbook类成员 成员属性 来源
price 不可访问 继承自book类
title 不可访问 继承自book类
lang private codingbook新增
setprice private 继承自book类
settitle private 继承自book类
getprice private 继承自book类
gettitle private 继承自book类
dispaly private 继承自book类
setlang public codingbook新增
getlang public codingbook新增

3.2 C++继承方式的更多相关文章

  1. js的三种继承方式及其优缺点

    [转] 第一种,prototype的方式: //父类 function person(){ this.hair = 'black'; this.eye = 'black'; this.skin = ' ...

  2. JavaScript继承方式详解[转]

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现 ...

  3. 从jQuery中学习来的另一种继承方式(技巧)

    遵从Js的原型链规则,利用js灵活的特性灵活地改造原型,可以实现各种创意地继承方式,昨天研究了jQuery,对作者实现继承的方式感到佩服,他对js原型和原型链的理解比较透彻,运用自如.这里给出jQue ...

  4. 重新理解JS的6种继承方式

    写在前面 一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触. 偏见归偏见,既然面试官问到了JS的OOP,那么说明这 ...

  5. js两种定义函数、继承方式及区别

    一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function ...

  6. 谈谈JavaScript的2种主要继承方式

    今天给自己巩固一下js的继承知识,基础不好,有不对的地方,请尽量拍砖,越重越好. js继承方法最主要的是2种,一种是通过原型的方式,一种是通过借用call&apply的构造函数方式. 1.原型 ...

  7. C++的三种继承方式简述

    C++对父类(也称基类)的继承有三种方式,分别为:public继承.protected继承.private继承.三种继承方式的不同在于继承之后子类的成员函数的"可继承性质". 在说 ...

  8. C++学习15 继承权限和继承方式

    C++继承的一般语法为: class 派生类名:[继承方式] 基类名{ 派生类新增加的成员 }; 继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的).private(私有的)和 ...

  9. Javascript的四种继承方式

    在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击. 选定基类后,就可 ...

  10. JavaScript之四种继承方式讲解

    在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击. 选定基类后,就可 ...

随机推荐

  1. gradlew 的https代理设定

    在内网编译vlc for Android 时, 总是在 [./gradlew assemble] 卡住, 在网上找到了设置代理的方法: 在gradlew 的同一目录,建立一个 gradle.prope ...

  2. 高并发之限流RateLimiter(二)

    Guava RateLimiter提供了令牌桶算法实现:平滑突发限流(SmoothBursty)和平滑预热限流(SmoothWarmingUp)实现. SmoothBursty:令牌生成速度恒定 @T ...

  3. Java方法重载的区分

    测试程序代码: class Computer { private int x; public Computer(){ this(10); } /** * 构造方法重载 * @param x */ pu ...

  4. c++-pimer-plus-6th-chapter03

    Chapter Review Having more than one integer type lets you choose the type that is best suited to a p ...

  5. LeetCode--371--两整数之和

    问题描述: 方法: class Solution(object): def getSum(self, a, b): """ :type a: int :type b: i ...

  6. PHP字符串函数小结

    1. strlen:获得字符串长度 2. substr:字符串截取函数 格式:string substr ( string $string , int $start [, int $length ] ...

  7. Pandas读取文件

    如何使用pandas的read_csv模块以及其他读取文件的模块?? 一起来看一看 Pandas中read_csv和read_table的区别 注:使用pandas读取文件格式为pandas特有的da ...

  8. CSS知识点(三)

    十三.标准文档流. 标准文档流下有哪些微观现象? 1.空白折叠现象 多个空格会被合并成一个空格显示到浏览器页面中.img标签换行写.会发现每张图片之间有间隙,如果在一行内写img标签,就解决了这个问题 ...

  9. echarts-------饼形图

    首先echarts是一个可以提供给用户体验效果更好的一个图形界面, Canvas 类库 ZRender. 1.下载echarts的js,可以在官方网址进行下载echarts.min.js 2.将下载下 ...

  10. 【转】Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...