前沿
C++面向对象的三大特性为:封装、继承、多态。
封装的意义:
- 将属性和行为作为一个整体,表现生活中的事物
- 将属性和行为加以权限控制
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物。
语法: class 类名 { 访问权限 : 属性 / 行为 } ;
示例1:设计一个圆类,求圆的周长
#include <iostream>const double PI = 3.14;
class Circle // class 类名
{// 访问权限// 公共权限
public: // 表明 属性和行为 不管是在类内还是类外都可以被访问// 属性// 半径int m_r;// 行为(函数)// 获取圆的周长double calculate(){return 2 * PI * m_r;}
};
int main()
{using namespace std;// 通过圆类,创建具体的圆 c1(对象)// 实例化 (通过一个类 创建一个对象的过程)Circle c1;// 给圆对象 的属性进行赋值 c1.m_r = 10;cout << "圆的周长为: " << c1.calculate() << endl;system("pause");return 0;}
示例2: 设计学生类,属性: 姓名 , 学号; 行为: 显示姓名、 学号。
#include <iostream>
#include <string>
using namespace std;
class Student
{// 权限
public:// 属性string name;string id;// 行为 (显示属性)void print_student() {cout << "学生的名字: " << name << endl;cout << "学生的学号: " << id << endl;}
};int main()
{string name, id;cin >> name;cin >> id;Student student;student.name = name;student.id = id;student.print_student();return 0;
}
这是通过初始化给属性进行赋值。
也可以通过 行为 对属性进行赋值。
class Student中定义 行为
void setName(string s_name){name = s_name;}
main() 函数中使用
student.setName("张三");
类中的属性和行为 称为 成员
属性 也称为 成员属性、成员变量
行为 也称为 成员函数、成员方法
封装的意义二
类在设计时,可以把属性和行为放在不同的权限下,加以控制。
访问权限有三种:
- public 公共权限
- protected 保护权限
- private 私有权限
#include <iostream>
using namespace std;
// 访问权限
// 公共权限 public 成员 类内可以访问, 类外也可以访问
// 保护权限 protected 成员 类内可以访问 类外不可以访问
// 私有权限 private 成员 类内可以访问 类外不可以访问
/*
继承: 父类中的保护权限,子类也可以访问父类中的保护成员父类中的私有权限,子类不可以访问父类中的私有成员
*/
class Person
{
public:// 公共权限 string m_Name; // 姓名
protected:// 保护权限string m_Car; // 汽车
private:// 私有权限int m_Password; // 银行卡密码
public:void func(){m_Name = "张三";m_Car = "拖拉机";m_Password = 123456;}
};
int main()
{Person p1;p1.m_Name = "李四";//p1.m_Car = "奔驰"; // 保护权限内容不能访问//p1.m_Password = 123; // 私有权限不可以访问return 0;
}