一,为什么要引入继承?

继承是一个非常自然的概念,现实世界中的许多事物也都是具有继承性的。

例如,爸爸继承爷爷的特性,儿子又继承爸爸的特性等都属于继承的范畴。下面是一个简单的汽车分类图:

在这个分类图中建立了一种层次结构,最高层是最普遍,最一般的,每一次都比它上一层的更详细,更具体。

其中把上一层的叫做基类(或父类),紧接着基类的下一层叫做派生类(或子类)。

所谓继承,就是从先辈处得到属性和特征。

类的继承就是新类从已有类得到已有的特性,新类被称为派生类,已有类被称为基类。可抽象为派生类是基类的具体化,而基类则是派生类的抽象。

下面通过一个例子说明为什么要引用继承?

class Person
{
private:
int length;//身高
int weight;//体重
int borndate;//出生日期
}; class Student
{
private:
int length;//身高
int weight;//体重
int borndate;//出生日期 int score;//成绩
int total;//总分
char* school;//学校
};

上面定义了两个类,一个人类,一个学生类,仔细观察我们发现人类中具有的属性(即类的成员数据)在学生类中都具有。

换言之,学生也是人,反过来讲人不一定是学生。就像这样的代码,人类中的属性我们重复定义了两次.

那么有没有一种方法能避免这种代码重复呢?是的,这就是我们的继承.

继承机制是面向对象程序设计中避免代码重复的最重要的手段,它允许程序员对已有类进行扩展,增加功能.

二,继承的定义格式

eg:

class Person
{
private:
int length;//身高
int weight;//体重
int borndate;//出生日期
}; class Student:public Person
{
private:
int score;//成绩
int total;//总分
char* school;//学校
};

创建一个学生对象试试

基类的所以对象都被继承过来了,很棒吧!

注意:class如果没有显示的给出继承方式,系统默认为private继承,但是最好还是显示定义继承类型,即使是私有继承。

(struct的默认继承方式则是public。)

(未完待续......)

(本文来源于互联网,若有侵权,请联系博主)

【C++】浅谈三大特性之一继承(一)的更多相关文章

  1. 【C++】浅谈三大特性之一继承(三)

    四,派生类的六个默认成员函数 在继承关系里,如果我们没有显示的定义这六个成员函数,则编译系统会在适合场合为我们自动合成. 继承关系中构造函数和析构函数的调用顺序: class B { public: ...

  2. 【C++】浅谈三大特性之一继承(二)

    三,继承方式&访问限定符 派生类可以继承基类中除了构造函数和析构函数之外的所有成员,但是这些成员的访问属性是由继承方式决定的. 不同的继承方式下基类成员在派生类中的访问属性: 举例说明: (1 ...

  3. 浅谈python的对象的三大特性之继承

    前面我们定义了人的类,并用这个类实例化出两个人jack和lily,查看了它们的内存空间. 现在我们再来看看类中所存在的对向对象编程的三大特性之继承的一些特性. 前面定义了一个人的类,可是我们还知道,人 ...

  4. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  5. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  6. (转)java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  8. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  9. 黑马程序员——OC语言 三大特性之继承

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三大特性之继承 (一)继承的基本用法 先建立个Animal再用Dog继承前 ...

随机推荐

  1. Sublime Text 中文乱码解决方案

    1.到这里下载安装PackageControl https://packagecontrol.io/installation#Manual 完成重启Sublime Text: 2.按Ctrl+Shif ...

  2. 前端开发面试题总结之——HTML

    ______________________________________________________________________________________________ 相关知识点 ...

  3. Java初学练习答案(循环)

    /* 题目如下: 1 (for 循环)*编程找出四位整数abcd 中满足下述关系的数. (ab+cd)(ab+cd)=abcd 2 (循环)*读入一个整数n,输出如下图形 n = 3 * *** ** ...

  4. 浅谈Activiti Modeler 的扩展

    为什么要扩展         最近项目打算用activiti工作流中activiti modeler来做模块的可视化订阅,但是原生的activiti任务节点,有一些不符合业务需要,比如 配置项多,属性 ...

  5. BZOJ 1228: [SDOI2009]E&D(SG定理)

    这道嘛,很容易就看出是个nim和,然后问题就是怎么算子问题的sg函数了 先暴力个表看下规律,很容易就找出来了~~~(百度空间又渣了,图贴不出来= =) 32 0 1 0 2 0 1 0 3 0 1 0 ...

  6. CSS3 3D的总结(初学者易懂)

    CSS3 3D案例的总结 如果要说是3D的基础概念,首先我就来说一说rotateX().rotateY().rotateZ()这几个属性 rotateX():对应的是3D模型中的X轴上的旋转,传入的参 ...

  7. system, fileExist函数包装

    #include "stdio.h" #include <string> #include<sys/types.h> #include<fcntl.h ...

  8. web及H5 的链接测试

    1:先下载一个Xenu工具 2:安装完成之后,进入页面(将弹出框关闭) 3:进行设置(一般不用修改设置) 4:修改完成之后点击工具栏中的file按钮,并输入想要测试的URL地址 5:点击OK测试完成之 ...

  9. 地图定位CoreLocation框架,地理位置编码与反编码

    在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...

  10. CSS中padding和margin以及用法

    CSS中padding与margin 1.padding:内边距,表示控件内容相对于边缘的距离. 2.margin:外边距,表示控件边缘相对于父空间的边缘. 参考:http://www.studyof ...