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

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

相关文章

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

Java 继承和多态的作用及好处

《Java继承和多态的作用及好处》文章讲解Java继承与多态的概念、语法及应用,继承通过extends复用父类成员,减少冗余;多态实现方法重写与向上转型,提升灵活性与代码复用性,动态绑定降低圈复杂度... 目录1. 继承1.1 什么是继承1.2 继承的作用和好处1.3 继承的语法1.4 子类访问父类里面的成

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

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中,多重继承是一种强大的功能,它允许一个