爱上c++的第二天:类和对象的三大特性-封装

爱上c++的第二天:类和对象的三大特性-封装,第1张

爱上c++的第二天:类和对象的三大特性-封装

目录

#1.封装的意义

##1,将属性和行为作为一个整体

##2,将属性和行为加以权限访问

##3,实例化:通过一个类,创建一个对象的过程。

#2.成员属性私有化

#3.例题:立方体类的设计


这一章作为一个先驱章节,这一个学好了以后,才能有后面的基础,不然学后面的东西会感觉很吃力的哦。

c++认为万事万物都可以看作对象,而对象又有其属性和行为。

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

#1.封装的意义
##1,将属性和行为作为一个整体

如何封装?

class 类名{访问权限,属性,行为(一般用函数来表示)}

#define _CRT_SECURE_NO_WARNINGS 1

#include
using namespace std;

const double PI = 3.14;

//建立一个圆类
class Circle {
//访问权限:
public:
	//属性
	int r;
	//行为:一般用函数来实现
	double calZC() {
		return 2 * PI * r;
	}
};


int main() {
	//通过圆类来创建一个变量
	//实例化:通过一个类,创建一个对象的过程。
	Circle c1;
	//初始化圆类
	c1.r = 10;

	cout << "圆的周长为:" << c1.calZC() << endl;

	return 0;
}
##2,将属性和行为加以权限访问

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

public公共权限类内类外都能访问private私有权限类内可以,类外不行protected保护权限类内可以,类外不行

这个时候,有人可能会想到struct,

其实struct也算一个类,它的访问权限默认为public而已

而,class的默认访问权限为私有权限

#define _CRT_SECURE_NO_WARNINGS 1

#include
using namespace std;

class c1 {
	int a;
}c;

struct c2 {
	int a;
}c4;
int main() {
	//c.a = 10;					class类默认权限为私有权限

	c4.a = 20;//struct结构体默认权限为公共权限,其实结构体也是属于一种类
	cout << "a = " << c4.a<< endl;

	return 0;
}
##3,实例化:通过一个类,创建一个对象的过程。
#define _CRT_SECURE_NO_WARNINGS 1

#include
#include
using namespace std;
//设计一个学生类,属性有姓名和学号,可以展示学生的姓名和学号

class student {
public:

	string name;
	int num;

	void print() {
		cout << name << endl;
		cout << num << endl;
		//cout<> s.name;
	cin >> s.num;

	s.print();
	return 0;
}



#define _CRT_SECURE_NO_WARNINGS 1

#include
#include
using namespace std;
//设计一个学生类,属性有姓名和学号,可以展示学生的姓名和学号

class student {
public:

	string name;
	int num;

	//通过行为来给属性赋值;
	void setname(string Name) {
		name = Name;
	}
	void setnum(int Num) {
		num = Num;
	}


	void print() {
		cout << name << endl;
		cout << num << endl;
		//cout< 

#2.成员属性私有化

我们在创建类的时候,尽量将成员属性私有化,因为

1,可以自己控制读写权限

2,对只写权限,我们可以检测数据的有效性(不能让用户修改程序,即用户不能访问内部程序,以防用户进行非法 *** 作)

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
using namespace std;

class person {
public:
	string name;
protected:
	string car;
private:
	int password;


private:
//在类内都能访问
	void func() {
		name = "zhangsan";
		car = "奔驰";
		password = 1234;
	}

};

int main() {
	person p;

	p.name = "lisi";

}
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
using namespace std;

//成员属性私有化
class person {
//由于属性私有化了,那么就需要一个接口,用来链接类内和类外
public:
	//姓名设置可读可写
	void setname(string name) {
		m_name = name;
	}
	string getname() {
		return m_name;
	}
	//获取年龄
	int getage() {
		return m_age;
	}
	//设置年龄
	//如果将属性私有化,对于写权限,我们可以检测数据的有效性
	//这个步骤不能由用户来完成,只能由程序员在内部完成,只有私有
	//权限 ,才能对写的 *** 作进行限制,不然的话,容易产生无效信息
	void setage(int age) {
		if (age < 0 || age>150) {
			cout << "你是人是鬼?" << endl;
			m_age = 0;
			return;
		}
		m_age = age;
	}
	//情人设置为只写
	void setlover(string lover) {
		m_lover = lover;
	}


	//属性全部设为私有权限,可以由程序员自己控制读写权限
private:
	string m_name;
	int m_age;
	string m_lover;
};

int main() {
	person p;
	p.setname("zhangsan");
	cout <<"姓名:" << p.getname() << endl;
	p.setage(30);
	cout <<"年龄:" << p.getage() << endl;
	p.setlover("lisi");

	return 0;
}

#3.例题:立方体类的设计
#define _CRT_SECURE_NO_WARNINGS 1

#include
using namespace std;

//立方体类的设计
//创建立方体类
// 设计属性
// 设计行为。获取立方体面积和体积
//分别利用全局函数和成员函数判断两个立方体是否相等


class Cube {
private:
	int m_L;
	int m_H;
	int m_W;
public:
	//长
	void setL(int l) {
		m_L = l;
	}
	int getL() {
		return m_L;
	}
	//高
	void setH(int h) {
		m_H = h;
	}
	int getH() {
		return m_H;
	}
	//宽
	void setW(int w) {
		m_W = w;
	}
	int getW() {
		return m_W;
	}
	//面积
	int s() {
		return 2 * (m_L * m_W + m_L * m_H + m_H * m_W);
	}
	//体积
	int v() {
		return m_L *m_W* m_H;
	}
	//这两个函数可以不传参,因为在类内,可以访问到私有权限内的成员,直接调用就行了
};

int main() {

	// *** 作


	return 0;
}

这只是一个引子,所以并不难,也就一点东西,但是一定是要打一遍的哈,看完这个以后,再去看看下一章,下一章才是重点所在。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5711889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存