14、类和封装的概念

1、类的封装

  • 类通常分为以下两个部分
    1、 类的实现细节
    2、 类的使用方式
    在这里插入图片描述
    我们只要会用就行,具体它是怎么来的,我们并不关心。
  • 当使用类时,不需要关心其实现细节
  • 当创建类时,才需要考虑其内部实现细节

例:
在这里插入图片描述

  • 封装的概念
    — 根据经验:并不是类的每个属性都是对外公开的
       如:女孩子不希望别人知道自己的体重和年龄
       如:男孩子不希望别人知道自己的身高和工资
    — 而一些类的属性是对外公开的
       如:人的姓名,学历,国籍,等
    — 必须在类的表示法中定义属性和行为的公开级别
       类似文件系统中文件的权限

2、C++中类的封装

— 成员变量:C++中用于表示类 属性 的变量
— 成员函数:C++中用于表示类 行为 的变量
— C++中可以给成员变量和成员函数定义访问级别

  • public
      成员变量和成员函数可以在类的内部和外界 访问和调用
  • private
      成员变量和成员函数只能在类的内部被访问和调用
#include <stdio.h>

struct Biology
{
	bool living;
};
struct Animal:Biology
{
	bool movable;
	void findfood()
	{

	}
};
struct Plant:Biology
{
	bool growable;
};
struct Beast:Animal
{
	void sleep()
	{

	}
};
struct Human:Animal
{
	void sleep()
	{

	}
	void work()
	{

	}
};
struct Boy :Human
{
private:
	int Height;
	int Salary;
public:
	int Age;
	int Weight;

	void print()
	{
		Height = 175;
		Salary = 9000;
		printf("I'm a boy,my Height is %d cm\n", Height);
		printf("my salary is %d RMB\n", Salary);
	}
};
struct Girl :Human
{
private:
	int Weight;
	int Age;
public:

	void print()
	{
		Age = 22;
		Weight = 48;
		printf("I'm a girl,I'm %d years old\n", Age);
		printf("my weight is %d kg\n", Weight);
	}
};
int main()
{
	Boy b;
	Girl g;
	g.print();

	b.Age = 19;
	b.Weight = 120;
	b.print();

	return 0;
}

在这里插入图片描述

3、类成员的作用域

  • 类成员的作用域都只在类的内部,外部无法直接访问
  • 成员函数可以直接访问成员变量和调用成员函数
  • 类的外部可以通过类变量(对象)访问public成员(成员变量和成员函数)
  • 类成员的作用域与访问级别没有关系

C++用struct 定义的类中所有成员默认为public

#include <stdio.h>
int i = 0;
struct Test
{
private:
	int i;
public:
	int j;
	int getI()
	{
		i = 3;
		return i;
	}
};
int main()
{
	int i = 2;
	Test test;
	test.j = 4;
	printf("i = %d\n", i);		//2
	printf("::i = %d\n", ::i);  //访问默认命名空间的i,就是全局作用域的i = 0
	//printf("test.i = %d\n", test.i);  error
	printf("test.j = %d\n", test.j);  //4
	printf("test.getI() = %d\n", test.getI());  //i = 3

	return 0;
}

在这里插入图片描述

小结:

  • 类通常可以分为使用方式和内部细节两部分
  • 类的封装机制使得使用方式和内部细节相分离
  • C++中通过定义类成员的访问级别实现封装机制
  • public 成员可以在类的内部和外界 访问和调用
  • private 成员只能在类的内部被访问和调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值