【C++学习】List4.1类和对象——封装-创新互联

  • C++面向对象的三大特性为:封装、继承、多态
  • C++认为万事万物都皆为对象,对象上有其属性和行为
1.封装

1.封装的意义
封装时C++面向对象三大特性之一
封装的意义:

创新互联建站-成都网站建设公司,专注成都做网站、成都网站建设、成都外贸网站建设、网站营销推广,国际域名空间,虚拟空间,网站托管运营有关企业网站制作方案、改版、费用等问题,请联系创新互联建站
  • 将属性和行为作为一个整体,表现生活中的事物
  • 将属性和行为加以权限控制

封装的意义一:在设计类的时候,属性和行为写在一起,表现事物
语法:class 类名{ 访问权限: 属性 / 行为 }

示例1:设计一个圆类,求圆的的周长

#includeusing namespace std;
const double PI = 3.14;

//设计一个圆类,求圆的周长
//周长公式:  2 * PI * 半径

//class代表设计一个类,类后紧跟着的就是类名称
class Circle
{//访问权限
	//公共权限
public:
	//属性
	int circle_r;  //半径

	//行为
	//获取圆的周长
	double caculateZC() {return 2 * PI * circle_r;
	}

};

int main() {//通过圆类 创建具体的圆(对象)
	Circle cl;  //实例化:通过一个类创建一个对象
	//给圆对象 的属性进行赋值
	cl.circle_r = 10;

	cout<< "圆的周长:"<< cl.caculateZC()<< endl;
	 
	return 0;

}

示例2:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号

#includeusing namespace std;
const double PI = 3.14;

//

 //设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号
class Student
{//访问权限
public:  //公共权限

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

	//属性
	int number;  //学号
	string name; //姓名

	//行为
	//显示姓名和学号
	void showStudent() {cout<< "姓名:"<< name<< endl;
		cout<< "学号:"<< number<< endl;

	}

	//给姓名赋值
	void setName(string st_name) {name = st_name;
	}
	//给姓名赋值
	void setId(int id) {number = id;
	}

};

int main() { //创建一个具体学生,,,实例化
	Student st1;
	//给st对象,进行属性赋值操作
	st1.name = "小扬";
	st1.number = 1001;

	//显示学生信息
	st1.showStudent();

	Student st2;
	st2.name = "小凡";
	st2.number = 1002;

	st2.showStudent();

	Student st3;
	st3.setName("小宇");
	st3.setId(1003);

	st3.showStudent();

	 
	return 0;

}

封装的意义二:类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:

  1. public 公共权限
  2. protected 保护权限
  3. private 私有权限
#includeusing 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 = 123;

	}

};

int main() {//实例化具体对象
	Person p1;
	
	p1.m_name = "蛋蛋";
	//p1.m_car = "保时捷"; //保护权限的内容,在类外访问不到
	cout<< p1.m_name<< endl;
	
	p1.func();
	cout<< p1.m_name<< endl;

	 
	return 0;

}

2.struct和class 的区别

在C++中struct和class唯一的区别在于 默认的访问权限不同
区别:

  • struct 默认权限是 公共
  • class 默认权限是 私有
#includeusing namespace std;
 
//struct 和class 区别
//struct 默认权限是公共
//class 默认权限是私有

class C1 {int m_A = 0; //默认权限是 私有
};

struct C2 {int m_B = 1; //默认权限是 公共
};

int main() {C1 c1;
	//cout<< c1.m_A<< endl;  //私有权限,不可访问
	C2 c2;
	cout<< c2.m_B<< endl;  //公共权限,可以访问

	 
	return 0;

}

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

#includeusing namespace std;
 
//成员属性设置为私有
//1.可以自己控制读写全写
//2.对于写可以检测数据的有效性


//设计人类
class Person
{private:
	//姓名
	string name;
	//年龄
	int age = 18;
	//爱人
	string lover;


public:
	//设置姓名
	void setName(string pname) {name = pname;
	}
	//获取姓名
	string getName() {return name;
	}
	void setAge(int page) {if (page< 0 || page>150) {	age = 0;
			cout<< "年龄有误"<< endl;
			return;
		}
		age = page;

	}
	//获取年龄
	int getAge() { 
		return age;
	}
	//获取爱人
	string getLover() {lover = "小扬";
		return lover;
	}
};

int main() {Person p;
	p.setName("小蛋");
	cout<< "姓名为:"<< p.getName()<< endl;
	p.setAge(200);
	cout<< "年龄为:"<< p.getAge()<< endl;
	cout<< "爱人为:"<< p.getLover()<< endl;
	 

	 
	return 0;

}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


标题名称:【C++学习】List4.1类和对象——封装-创新互联
标题路径:http://myzitong.com/article/dghsep.html