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

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

相关文章

JavaSE——封装、继承和多态

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

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

chapter06 面向对象基础 知识点Note

文章目录 前言类的设计 属性和行为对象的内存解析 (堆 栈 方法区)类的成员之一 变量(属性) field类的成员之二 方法 method对象数组方法重载 overload可变个数的形参 语法糖方法的值传递机制递归关键字package importMVC设计模式import导入面向对象特征之一 封装类的成员之三 构造器JavaBeanUML类图 前言 ` 面向对象封装 面向