C++ 教程 - 06 类的封装、继承、多态

文章目录

  • 封装
  • 继承
  • 多态

封装

  • 在private/protected 模块放置数据或者底层算法实现;
  • 在public块提供对外接口,实现相应的功能调用;
  • 类的封装案例
#include <iostream>
using namespace std;// 类的定义 一般放在头文件
class Stu {public: // 公有权限 接口void setAge(const int& age) {this->age = age;}const int& getAge() const {return age;}private: // 数据封装int age;
};int main() {// 创建对象Stu s1; s1.setAge(20);cout << s1.getAge() << endl;return 0;
}

继承

  • 将一个类的成员变量、成员函数,应用到另一个类中,实现复用;
  • 支持多继承,同python一样;而 java 仅支持单继承;
  • 继承修饰符public、protected、private; 若不写修饰符,则默认private继承;
  • public继承,基类中的public、protected、private 保持不变;
  • protected继承,基类中的public、protected、private 变为protected、protected、private
  • private继承, 基类中的public、protected、private全部变为private;
#include <iostream>
#include <string>
using namespace std;// 基类
class People {
public:string name;People(const string& name, const int& age, const double& height) {this->name = name;this->age = age;this->height = height;cout << "父类完成初始化" << height << endl;}void printName() const {cout << "name:" << name << endl;}void printAge() const {cout << "age:" << this->age << endl;}void printHeight() const {cout << "height:" << this->height << endl;}protected:int age;private:double height;
};// 类的定义 一般放在头文件
class Stu: public People { // 公有继承(经常使用)
public: // 可多个块int num; // 若未放在public等修饰符下, 默认私有Stu(const string& name, const int& age, const double&heigh): People(name, age, heigh){// 显式调用父类的有参构造,否则隐式调用父类的无参构造;// 子类的构造 初始化this->num = 102;}void printAge() const {// 子类方法中,只能访问继承的public/protected 成员,private成员无法访问,但可以通过父类的方法到父类代码中访问;cout << "age:" << this->age << endl;}/*void printHeight() const {cout << "height:" << this->height << endl;}  不可访问继承的私有 */};int main() {string name = "jack";int age = 20;double height = 23.5;// 创建对象Stu s1(name, age, height);  // 父类的构造方法 完成对私有变量的初始化s1.printName();s1.printAge();s1.printHeight(); // 在父类中访问私有	return 0;
}

在这里插入图片描述

多态

  • 多个子类继承父类中的方法,分别实现方法的重写;
  • 父类中采用 virtual 声明为虚函数;
  • 函数体赋值为=0,则为纯虚函数;
在这里插入代码片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3、广告-交易模式

一、交易模式种类&#xff08;Types of Transaction Models&#xff09; RTB实时竞价&#xff08;Real-Time Bidding, RTB&#xff09; RTB是程序化广告中最常见的交易模式之一。它通过实时竞价的方式&#xff0c;让广告主在广告展示前以竞拍的方式获取广告展示机会。每当有广告…

uniapp——上传图片获取到file对象而非临时地址——基础积累

最近在看uniapp的代码&#xff0c;遇到一个需求&#xff0c;就是要实现上传图片的功能 uniapp 官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 上传图片有对应的API&#xff1a; uni.chooseImage方法&#xff1a;https://uniapp.dcloud.net.cn/api/media/image.html#choo…

筛斗数据:数据提取技术,构建智慧企业的基石

在信息化和数字化的浪潮下&#xff0c;企业面临着前所未有的机遇与挑战。为了在这场变革中立于不败之地&#xff0c;越来越多的企业开始转型为智慧企业&#xff0c;而数据提取技术正是构建智慧企业的关键基石。 一、数据提取技术的重要性 数据提取技术是指从各种数据源中自动…

零基础小白学习 Python,应该如何配置 Python 开发环境?(包含Windows、MacOS、Linux)

学习编程的第一步是配置一个良好的开发环境&#xff0c;尤其是对零基础的小白来说&#xff0c;一个简单而有效的开发环境能够帮助你快速上手&#xff0c;减少不必要的技术障碍。 1. 理解Python和开发环境 Python是一种高级编程语言&#xff0c;具有简单易学、功能强大的特点。…

LeetCode-数组/回溯-No40组合总和II

题目&#xff1a; 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1: 输入: ca…

没有手机怎么办呐!高考成绩出来了:请不要吹灭别人的灯——早读(逆天打工人爬取热门微信文章解读)

结婚的时候红包随礼随多少呢 引言Python 代码第一篇 洞见 高考成绩出来了&#xff1a;请不要吹灭别人的灯第二篇结尾 为什么是这个标题呢&#xff1f; 是因为摸鱼看足球直播 主播好兄弟结婚 他老婆问他要红包 引言 今天早上停电了 大概是在3点多的时候 我本身一直都没有开空调…

Javac编译器

Java语言的编译器是一段不确定的操作过程&#xff0c;可能是讲Java文件转变为class文件的过程&#xff0c;也可能是指虚拟机的后端编译&#xff0c;讲字节码转换为机器码的过程&#xff0c;还肯是静态提前编译器直接讲Java文件编译为本地机器代码的过程。 前端编译器&#xff…

HTML5五十六个民族网站模板源码

文章目录 1.设计来源高山族1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 中国民族界面演示1.5 关于高山族界面演示1.6 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.ne…

TypeError: Object of type bytes is not JSON serializable

从您提供的错误跟踪信息来看&#xff0c;问题在于您尝试将一个bytes类型的对象作为JSON数据传递给requests.post方法的json参数。但是&#xff0c;json参数只接受可以被json.dumps序列化为JSON格式的Python数据类型&#xff08;如字典、列表、字符串、数字、None、True和False&…

FreeRTOS中任务控制块和任务句柄的作用

1. 任务控制块&#xff08;Task Control Block&#xff0c;TCB&#xff09; 任务控制块 是FreeRTOS内核用于管理任务的关键数据结构。它包含了任务执行所需的各种信息。每个任务对应一个唯一的TCB。 主要作用&#xff1a; 存储任务状态&#xff1a;TCB包含任务的当前状态信息…

数字化转型第三步:数字化业务创新与发展,提升收入和利润

引言&#xff1a;之前笔者的文章发布了企业数字化转型业务部分&#xff0c;如【开源节流】如何通过数字化转型增强盈利能力&#xff1f;企业供应链数字化转型如何做&#xff1f;让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…

java Object中有哪些方法

在Java中&#xff0c;java.lang.Object类是所有类的父类。每个类都直接或间接地继承自Object。以下是Object类中定义的主要方法&#xff1a; Object类的方法 public final Class<?> getClass() 返回一个表示对象运行时类的Class对象。 Object obj new Object(); Class…

基于jeecgboot-vue3的Flowable流程-自定义业务表单处理(二)-挂接自定义业务表单

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、增加一个根据服务名称动态寻找对应自定义表单组件的hooks import { ref, reactive, computed, markRaw, onMounted, defineAsyncComponent } from vue; import { listCustomForm } fro…

PostgreSQL 高可用性与灾难恢复策略(七)

1. 备份与恢复策略 1.1 常见备份策略 1.1.1 定期物理备份 使用 pg_basebackup 工具创建物理备份&#xff0c;备份数据库的整个数据目录。 pg_basebackup -D /path/to/backupdir -Fp -Xs -P -U username -h hostname1.1.2 逻辑备份 使用 pg_dump 工具创建逻辑备份&#xff…

在Java中,final、finally和finalize

在Java中&#xff0c;final、finally和finalize是三个不同的概念&#xff0c;它们有着各自独特的用途和语法。以下是对它们的详细解释&#xff1a; final final关键字可以用来修饰类、方法和变量。 修饰类&#xff1a;表示该类不能被继承。 public final class MyClass {// 类…

Redis之优惠券秒杀

文章目录 全局ID生成器添加优惠券实现优惠券秒杀下单超卖问题悲观锁和乐观锁相关文章乐观锁执行逻辑乐观锁解决超卖问题 一人一单功能超卖问题相关文章一人一单执行逻辑代码实现集群模式下锁失效 分布式锁基于Redis的分布式锁Redis实现分布式锁流程实现分布式锁初级版本分布式锁…

RabbitMQ(消息队列)

RabbitMQ 它是消息中间件&#xff0c;是在消息的传输过程中保存消息的容器&#xff0c;实现应用程序和应用程序之间通信的中间产品。目前主流消息队列通讯协议是AMQP&#xff08;二进制传输&#xff0c;支持多种语言&#xff09;、JMS&#xff08;HTTP传输&#xff0c;只支持J…

20240626(26.3) 财经要闻汇总

重点关注 ► 李强&#xff1a;我们注重固本培元&#xff0c;增强经济发展的基础支撑能力&#xff0c;长短结合、标本兼治打好政策“组合拳”&#xff0c;扎实推动高质量发展。坚持把新技术新产业的发展特征、中国的国情特点及各个地方的优势特色结合起来&#xff0c;在提升创新…

要离职了,记录一下个人在用的 Mac 应用

大家好&#xff0c;我是楷鹏。 通用 飞书 说起来不信&#xff0c;第一个推荐的是【飞书】&#xff0c;飞书是目前用过最舒服的项目管理应用了。 单拎出来一个飞书文档&#xff0c;功能和体验远超市面上腾讯文档、石墨文档、语雀等等。 现在飞书还支持个人版&#xff0c;No…

【系统架构设计师】六、信息系统基础知识(定义|分类|企业信息化系统|生命周期|建设原则|开发方法)

目录 一、信息系统的定义 二、信息系统的分类 三、企业使用的信息化系统 四、信息系统的生命周期 五、信息系统建设原则 六、信息系统的开发方法 6.1 结构化方法 6.2 原型法 6.3 构件化开发方法 6.4 面向服务的方法 6.5 面向对象的方法 6.6 敏捷方法 历年真题考情&#x…