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

文章目录

封装

  • 在private/protected 模块放置数据或者底层算法实现;
  • 在public块提供对外接口,实现相应的功能调用;
  • 类的封装案例
cpp 复制代码
#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;
cpp 复制代码
#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,则为纯虚函数;
cpp 复制代码
在这里插入代码片
相关推荐
ALex_zry1 分钟前
构建高可靠C++服务框架:从日志系统到任务调度器的完整实现
开发语言·c++·wpf
_zwy3 分钟前
【Linux 进程控制】—— 进程亦生生不息:起于鸿蒙,守若空谷,归于太虚
linux·运维·服务器·c++
du fei4 分钟前
C# 组件的使用方法
java·开发语言·c#
VBA633711 分钟前
VBA之Word应用:利用Range方法进行字体及对齐方式设置
开发语言
Eiceblue15 分钟前
使用Python写入JSON、XML和YAML数据到Excel文件
xml·开发语言·vscode·python·json·excel·pip
ALex_zry28 分钟前
让 Python 脚本在后台持续运行:架构级解决方案与工业级实践指南
开发语言·python·架构
rigidwill66638 分钟前
LeetCode hot 100—最长回文子串
数据结构·c++·算法·leetcode·职场和发展
小林熬夜学编程39 分钟前
【高阶数据结构】第二弹---图的深度解析:从基本概念到邻接矩阵的存储与操作
c语言·数据结构·c++·算法·深度优先·图论
xlcoding2 小时前
位掩码、哈希表、异或运算、杨辉三角、素数查找、前缀和
c++·算法·蓝桥杯
alive9032 小时前
【QT】 进程
c++·qt·嵌入式·进程·qprocess