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

一,为什么要引入继承?

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

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

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

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

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

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

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

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。)

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

时间: 2024-10-13 16:42:22

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

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

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

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

三,继承方式&访问限定符 派生类可以继承基类中除了构造函数和析构函数之外的所有成员,但是这些成员的访问属性是由继承方式决定的. 不同的继承方式下基类成员在派生类中的访问属性: 举例说明: (1)public继承 eg1: #include <iostream> using namespace std; class Person { public://公有数据成员 int length;//身高 int weight;//体重 }; class Student:public Person

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

[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大

java随笔:三大特性之继承

Java三大特性之继承 一.介绍 笔记重点:构造器.protected关键字(这个自行查阅).向上转型.private关键字(继承非常重要的要点)  复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的. 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

面向对象的三大特性之继承-基础知识总结------彭记(05)

面向对象的三大特性之继承: js中的某些对象没有一些需要的属性和方法,但是另外的对象有,那么拿过使用,就是继承. js中继承的实现方式: 1.混入式继承:通过循环将一个对象中的所有属性和方法混入到另外一个对象中: var me={ work:function(){ console.log('敲代码'): } }: var mayun={ money:9999999, car:'000', manager:function(){ console.log('管理巴巴...'); } } /*遍历,让

[转载]CSS三大特性(继承、优先级、层叠)之个人见解

首先声明一下CSS三大特性——继承.优 先级和层叠.继承即子类元素继承父类的样式,比如font-size,font-weight等f开头的css样式以及text-align,text- indent等t开头的样式以及我们常用的color.简单的就不演示了,强调一下font-size这个东东(虽然也有继承,但是标签不同继承的效果也 不一样),比如下面的代码: <!DOCTYPE html> <html lang="en"> <head> <met

面向对象编程三大特性之继承

面向对象编程有三大特性:继承,封装,多态~ 从object基类开始,逐步向下开枝散叶,组成了整个对象体系. 为什么要用这种形式? 解答这个问题之前,我们可以先回顾一下生物的进化史~ 从单细胞开始到现在的哺乳动物,在不断地进化中,物种的身体结构愈加复杂,这种进化所花费的时间非常漫长,但是一旦进化成功,后代就可以直接拥有父母的结构,而不用再次花费漫长的时间用来进化. 现在我们再次回到继承上来,object基类支持 .NET Framework 类层次结构中的所有类,并为派生类提供低级别服务.这是 .

java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承: 复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的.它必须能够做更多的事.引自<Think in java>    而代码复用也是程序员一直不断追求的.由此来说下代码复用的一种方式 java面向对象的三大特性--继承!! 在面向对象程序设计中,继承机制可以有效地组织类的结构.确定类之间的关系,在已有类的基础上开发新的类.继承机制在程序代码复用.提高软件开发效率.降低软件系统维护成本等方面具有重要作用.