0
点赞
收藏
分享

微信扫一扫

【C++】学习日记-类和对象-封装

穆风1818 2022-05-06 阅读 94

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

对象与类:

对象:C++中认为万事万物都可以看作一个对象,而对象具有两个特征:属性行为

属性:属性指的是对象具有的性质,例如将书看为一个对象,那么书具有的属性就是内容、目录、出版社、书名
行为:行为就是对象的可以进行的操作、动作,如书可以被翻、书可以被撕、书可以被看。

:具有相同性质的一类对象就称为类

封装

封装是将对象的属性和行为当作一个整体,用这个整体来表现对象的性质。一般来说,封装的对象属性和行为缺一不可。通过封装,我们可以得到具有相同性质的一组对象,即一个类;

封装一个类需要三个模块:访问权限、属性、行为
属性又称为:成员变量、成员属性
行为又称为:成员函数、成员方法

属性、行为:

下面用代码封装一个类:

//封装一个类
class Square
{
	//访问权限
public:
	//属性
	int side;
	//行为
	int Cal()
	{
		return side * side;
	}
};

int main()
{
	Square S;
	cin >> S.side;
	cout << S.Cal() << endl;
	return 0;
}

当然,我们也可以选择利用行为来改变类中的属性:

class S
{
public:
	int num;
	
	//接收num
	void Get()
	{
		cin >> num;
	}
	//当num不等于第二次输入的n,将属性num改为n
	void Check()
	{
		int n;
		cin >> n;
		if (n != num)
			num = n;
	}
	//输出num
	void Show()
	{
		cout << num<<endl;
	}

};

int main()
{
	S a;
	a.Get();
	a.Show();
	a.Check();
	a.Show();
	return 0;
}

不同:
在这里插入图片描述
相同:
在这里插入图片描述

访问权限:

类的访问权限有三种:
public–公共权限,类内和类外皆可访问
protected–保护权限,类内可以访问,类外不可以访问
private–私有权限,类内可以访问,类外不可以访问
其中protected与private的不同与它的继承特性有关,后续学习到再补;

class Info
{
//类内
public:
	string name="吴";
protected:
	int id=123;
private:
	int password=123456;
public:
	void Show_name()
	{
		cout << name << endl;
	}
protected:
	void Show_id()
	{
		cout << id << endl;
	}
private:
	void Show_passowrd()
	{
		cout << password << endl;
	}
};


int main()
{
    //类外
	Info Me;
	Me.name = "梁";
	Me.Show_name();
	//Me.Show_id();//无法访问
	//Me.Show_password();//无法访问
	return 0;
}

class与struct权限区别:
提到访问的权限,当class中不声明访问权限时,默认成员变量为私有权限,即private。而与类class相似的类struct默认成员变量为公共权限,即public:

struct A
{
	int id;
};
class B
{
	int id;
};

int main()
{
	B n;
	A m;
	//n.id = 10;//不可访问
	m.id = 10;
	return 0;
}

创建接口和成员私有化:

对于特定的成员,我们可以将其属性设为私有化,这样可以带来很多好处:
1.我们可以人为控制成员的读写功能;
2.我们可以对写功能进行检测限制;
下面代码运用了读写功能的控制以及接口设置的相关知识:

class Notebook
{
//私有属性
private:
	int id=3121002;
	int password=1235;
	int grade=100;
	char game_level='A';
//行为-读写接口
public:
	void Read_id()//只读
	{
		cout << id << endl;
	}
	void Write_password(int newp)//只写
	{
		if (newp != 0000)//接口控制
		{
			password = newp;
		}
		else
		{
			cout << "Fail" << endl;
		}
	}
	void Read_password()//只读
	{
		cout << password << endl;
	}
};


int main()
{
	Notebook Book;
	Book.Read_id();//读
	Book.Read_password();//读
	Book.Write_password(1123);//写
	Book.Read_password();//读
	return 0;
}
举报

相关推荐

0 条评论