第四课 类和对象-封装

C++面向对象的三大特性为:封装继承多态

具有相同性质的对象,我们可以抽象为


4.1封装
4.1.1封装的意义

  • 将属性和行为作为一个整体,表现生活中的实物
    语法:class 类名{ 访问权限: 属性 / 行为 };

类中的属性和行为 统一称为成员
属性 成员属性 成员变量
行为 成员函数 成员方法

// 圆周率
const double PI = 3.14;

// 定义一个类
class Circle
{
	// 访问权限,公共属性
public:

	// 属性 半径
	int m_r;

	// 行为 计算周长
	double claculate_l()
	{
		return 2 * PI * m_r;
	};

};


int main()
{
	// 实例化 通过圆类创造具体的圆
	Circle c1;
	// 给圆对象进行赋值
	c1.m_r = 10;
	cout << "圆的周长为" << c1.claculate_l() << endl;

	system("pause");
	return 0;
}

* 类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种:
1.public 公共权限 类内可以访问,类外也可以访问
2.protected 保护权限 类内可以访问,类外不可以访问 继承时,儿子可以访问父亲中的保护内容
3.private 私有权限 类内可以访问,类外不可以访问 继承时,儿子不可以访问父亲中的私有内容

class Person
{
public:
	// 公共权限
	string m_Name;

protected:
	// 保护权限
	string m_Car;

private:
	// 私有权限
	string m_Password;

public:
	void func()
	{
		m_Name = "张三";
		m_Car = "BYD";
		m_Password = "121221";
	}

};

int main()
{
	Person p1;

	p1.m_Name = "lisa";
	//p1.m_Car = "BMW";  //保护权限内容,在类外访问不到
	//p1.m_Password = "123454"; //私有权限内容,在类外访问不到

	return 0;
}

4.1.2 struct和class的区别 在C++中 struct和class唯一的区别就在于 **默认的访问权限不同** 区别: * struct 默认权限为公共 * class 默认权限为私有
class C1
{
  int m_A; // 默认权限为私有权限
}

struct C2
{
  int m_A; // 默认权限为公共权限
}

4.1.3 成员属性设置为私有

优点:将所有成员属性设置为私有,可以自己控制读写权限
对于写权限,我们可以检测数据的有效性

class Person
{
public:
	void set_name(string name)
	{
		m_Name = name;
	}

	void show_name()
	{
		cout << "姓名:" << m_Name << endl;
	}
	void set_age(int age)
	{
		if (age < 0 || age>160)
		{
			cout << "输入年龄有误" << endl;
			return;
		}
		m_Age = age;
	}
	void show_age()
	{
		cout << "年龄:" << m_Age << endl;
 	}

	void set_Idol(string Idol)
	{
		m_Idol = Idol;
	}
private:
	string m_Name;
	int m_Age = 20;
	string m_Idol;
};

int main()
{
	Person p1;
	p1.set_age(25);
	p1.show_age();

	p1.set_Idol("aimyon");

	p1.set_name("112");
	p1.show_name();

	system("pause");
	return 0;
}
posted @ 2025-04-10 09:57  起名字太难0123  阅读(8)  评论(0)    收藏  举报