前沿
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;
}