面向对象的另一大特性《继承》

2024-05-06 06:08

本文主要是介绍面向对象的另一大特性《继承》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C++是一门面向对象的编程语言,而面向对象的三大特性分别是   封装、继承、多态

今天就来谈谈面向对象中的另一个特性--------继承


继承和现实中的继承类似,在现实生活中儿子会具备父亲的一些特征,而且可能会继承父亲的财产

儿子与父亲的关系图如下图所示


在编程中将父亲定义为基类(或者定义为父类),儿子定义为子类,而C++中就是用继承来表示这种基类与子类的关系


我再用一个与程序员息息相关的例子来描述继承


然后通过代码进一步理解继承,我在前面的博客中写过一个Student类,这次将通过学生类派生出一个Student1类

Student类的实现代码可以参考http://blog.csdn.net/u010105970/article/details/25637493


在使用继承前Student类的代码

#include <iostream>
#include <String>using namespace std;class Student//定义一个Student类
{
public://构造函数Student(int n, string nam, char s){num = n;name = nam;sex = s;}//显示学生信息void show(){cout<<"num = "<<num<<endl;cout<<"name = "<<name<<endl;cout<<"sex = "<<sex<<endl<<endl;}//数据成员的类型为保护类型
protected:int num;//学号string name;//姓名char sex;//性别
};void main()
{//定义一个Student的对象stud1Student stud1(20010, "Hexing", 'm');//stud1调用成员函数show()实现学生信息的输出stud1.show();system("pause");
}

程序执行结果


Student1继承Student后的代码

#include <iostream>
#include <String>using namespace std;class Student//定义一个Student类
{
public://构造函数Student(int n, string nam, char s){num = n;name = nam;sex = s;}//显示学生信息void show(){cout<<"num = "<<num<<endl;cout<<"name = "<<name<<endl;cout<<"sex = "<<sex<<endl<<endl;}//数据成员的类型为保护类型
protected:int num;//学号string name;//姓名char sex;//性别
};//Student1以公有继承(public)的方式继承Student
class Student1 : public Student
{
public://构造函数中使用初始化表Student1(int n, string nam, char s, int a, string ad):Student(n, nam, s){age = a;addr = ad;}//显示学生信息void show1(){cout<<"num = "<<num<<endl;cout<<"name = "<<name<<endl;cout<<"sex = "<<sex<<endl;cout<<"age = "<<age<<endl;cout<<"addr = "<<addr<<endl<<endl;}//增加了新的数据成员
private:int age;//年龄string addr;//地址
};void main()
{//定义一个Student1类的对象studStudent1 stud1(10010, "Wangli", 'f', 19, "115 Beijing Road, Shanghai");//定义一个Student1类的对象stud2Student1 stud2(10011, "Zhangfun", 'm', 21, "213 Shanghai Road, Beijing");//定义一个Student类的对象stud3Student stud3(20010, "Hexing", 'm');stud1.show1();//调用成员函数,显示学生信息stud2.show();//因为对象stud2的类继承自Student,所以stud2可以使用Student类的成员函数stud3.show();//调用成员函数,显示学生信息system("pause");
}


执行结果



说明:

上面的代码中父类Student派生出子类Student1,所以子类Student1继承了父类Student的全部属性

子类可以访问父类的数据成员和成员函数

而访问限制受到了继承方式和访问级别的影响


可以通过查看下面的表格查看继承方式和访问级别对访问成员的影响



这篇关于面向对象的另一大特性《继承》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963594

相关文章

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

C#特性(Attributes)和反射(Reflection)详解

《C#特性(Attributes)和反射(Reflection)详解》:本文主要介绍C#特性(Attributes)和反射(Reflection),具有很好的参考价值,希望对大家有所帮助,如有错误... 目录特性特性的定义概念目的反射定义概念目的反射的主要功能包括使用反射的基本步骤特性和反射的关系总结特性

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Python多重继承慎用的地方

《Python多重继承慎用的地方》多重继承也可能导致一些问题,本文主要介绍了Python多重继承慎用的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录前言多重继承要慎用Mixin模式最后前言在python中,多重继承是一种强大的功能,它允许一个

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。