4 类和对象
面向对象三大特性:封装、继承、多态
万物皆对象。对象= 属性+行为
类是抽象的对象。 比如路上有很多(具体的)车,但抽象出来都属于车。
定义类的语法:
class 类名
{
访问权限:
属性;
行为;
};
4.1 封装
封装意义:
- 结合属性和行为,符合现实。
- 权限控制
圆类
const double PI 3.1415;
class Circle
{
public: //访问权限
//属性
int m_r; //半径
//行为
double cal_circumference()
{
return 2 * PI * m_r;
}
};
//使用类
int main(){
Circle c1;
c1.m_r = 10;
cout << c1.cal_circumference() << endl;
}
4.1.1 权限控制
权限控制是封装的另一个意义。
访问权限有三种
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 p;
p.m_Name = "李四";
p.m_Car = "五菱"// 错误,类外不能访问protected和private成员
}
4.1.2 struct 和 class
struct 成员默认是public
class 成员默认是private
4.1.3 成员属性设置为私有
class Person
{
public:
void set_name(string name){
m_Name = name;
}
void get_name(){
return m_Name;
}
private:
string m_Name;
}