C++面向对象的三大特性为:封装、继承、多态。
C++认为万事万物都皆为对象,对象上有其属性和行为。
例如:
(1)人可以作为对象,属性有:姓名、年龄、身高、体重...,行为有:跑、跳...
(2)车可以作为对象,属性有:轮胎、方向盘、车灯..,行为有:载人...
1、封装
1.1封装的意义
封装是C++面向对象三大特性之一。
封装的意义:
(1)将属性和行为作为一个整体,表现生活中的事物。
(2)将属性和行为加以权限控制。
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物。
语法:class 类名{
访问权限:
属性/行为;
};
示例:设计类计算圆的周长
cpp
#include<iostream>
using namespace std;
//圆周率
const double PI = 3.14;
//设计一个圆类,求圆的周长
class Circle
{
//访问权限
public://公共权限
//属性
int m_r;//半径
//行为
double calculate()//获取圆的周长
{
return 2 * PI * m_r;
}
};
int main()
{
//通过圆类创建具体的圆对象
Circle circle;
//给圆对象的属性进行赋值
circle.m_r = 10;
cout << "圆的周长为:" << circle.calculate() << endl;
system("pause");
return 0;
}
结果:
实例化:通过类创建一个对象。比如:上述代码中的:Circle circle 就是实例化。
示例:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。
cpp
#include<iostream>
#include<string>
using namespace std;
//设计学生类
class Student
{
public ://公共权限
//属性
string m_name;//姓名
int m_id;//学号
//行为
//显示姓名和学号
void showStudent()
{
cout << "姓名:" << m_name << " 学号:" << m_id << endl;
}
//给学号赋值
void setId(int id)
{
m_id = id;
}
//给姓名赋值
void setName(string name)
{
m_name = name;
}
};
int main()
{
//创建一个具体学生,实例化对象
Student s1;
s1.setName("刘五");
s1.setId(10);
s1.showStudent();
system("pause");
return 0;
}
结果:
类中的属性和行为我们统一称为成员。
属性又叫成员属性、成员变量。
行为又叫成员函数、成员方法。
封装意义二:类在设计时,可以把属性和行为放在不同的权限下加以控制。
访问权限有三种:
(1)public 公共权限 类内可以访问,类外可以访问。
(2)protected 保护权限 类内可以访问,类外不可以访问
(3)private 私有权限 类内可以访问,类外不可以访问