标题:类和对象笔记——封装
1.封装的意义:
1.将属性和行为作为一个整体,表现生活中的事物
2.将属性和行为加以权限控制
在下面我们将对这些概念进行讲解
意义1:
在设计类的时候我们要将属性和行为写在一起表现事物。
语法: class 类名 {访问权限:属性/行为};// ; 不能省去
举个例子:
class Cricle//(类名)
{
//访问权限:公共权限,意义二中我们会解释
public :
//半径->属性->一般是定义变量
int m_r;
//计算周长->行为->一般是函数
double calculate_length()
{
return 2*3.14*m_r;
}
/*
这里的为什么没有参数列表,在这个里面我们可以把
m_r看作是calculate——length的“全局变量“,因为
这个函数在m_r的作用域内部;
*/
};//一定不要少了;
光是定义了一个类是不行的我们还必须要有这个类的对象,将这个类进行实例化:
//创建一个对象,将类实例化
Cricle c1;
//给对象赋值:
c1.m_r=10;
cout<<c1.calculate——length()<<endl;
这就是意义1,将属性和行为作为一个整体,表现生活中的事物。
意义2:
类在设计时,可以把属性和行为放在不同的权限下面加以控制。
权限一共分为三种:
首先理解几个概念:类内访问就是类里面的其它成员直接使用成员名进行访问。类外访问,意思是通过形如对象名.成员名的方式进行访问。此时的.可以理解为中文的“的”。当然,->也有相同的含义。
1.公共权限(public):成员类内可以访问,类外也可以访问。通俗来讲就是,当你把该类实际化后 通过实例化对象可以访问。
2.保护权限(protected):成员类内可以访问,类外不可以访问
3.私有权限(private):成员类内可以访问,类外不可以访问
那么2和3有什么区别?
我们举一个现实生活中的例子:假设银行卡里的钱是不是,丈夫和妻子都可以访问,但是其他人不可以访问这就是保护权限。私有权限就是,丈夫的私房钱妻子就不能访问。私有的意思就是除了class自己之外,任何人都不可以直接使用。
下面我们举个代码实例:
class Person
{
//公共权限属性
public:
string name;
//保护权限属性
protected:
string m_car;
//私有权限属性
private:
int qq_password;
//下面代码就是我们所说的类内访问
public:
void func()
{
name="张三";
m_car="红旗";
qq_password=1212123123;
}
};
如果我们把类内访问那个位置的public改成private,那么则无法在类外调用,而public可以。
我们看看下面这张图片:
看吧,我们想访问实例化的对象中根本没有m_car和qq_password这两个个选项,因为他们的权限不允许。
看了简单的类和对象介绍,那么学了c的同学就要问,这和struct有什么区别
1.struct默认权限为公共权限,而class的默认权限为私有权限。
struct c1
{
int a;//默认是公共权限等价于public:int a;
};
struct c2
{
int a;//默认是私有权限等价于private:int a;
};
2.class 可以使用模板,而 struct 不能。(后面文章会解释)
将成员属性设置为私有:
优点:
1.将所有成员的属性设置为私有可以控制自己的读写权限
class Person
{
;
//公共权限属性
public:
void Set_name(string name)
{
m_name=name;
}
//私有属性
private:
string m_name;
};
int main()
{
Person s1;
s1.Set_name("张三");
}
普通情况下private是私有权限对吧,无法访问,但是我们通过公共权限下的函数修改了私有权限的值
2.对于读写权限我们可以解释数据的有效性。
这个位置我们输入的年龄不符合条件,所以输出不符合条件,应证了这个好处。
以上就是这一章节的部分学习笔记,其中掺杂一些本人观点如有错误欢迎指正。