封 装(面向对象特征之一):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
定义:把一个或多个项目封闭在一个物理的或者逻辑的包中。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
好处:将变化隔离;便于使用;提高重用性;安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
表现形式:
- 把成员变量用private修饰
- 提供对应的getXxx()和setXxx()方法
- private仅仅是封装的一种体现形式,不能说封装就是私有
this:代表对象。就是所在函数所属对象的引用。
this到底代表什么呢?哪个对象调用了this所在的函数,this就代表哪个对象,就是哪个对象的引用。
开发时,什么时候使用this呢?
在定义功能时,如果该功能内部使用到了调用该功能的对象,这时就用this来表示这个对象。
this 还可以用于构造函数间的调用。
调用格式:this(实际参数);
this对象后面跟上 . 调用的是成员属性和成员方法(一般方法);
this对象后面跟上 () 调用的是本类中的对应参数的构造函数。
注意:用this调用构造函数,必须定义在构造函数的第一行。因为构造函数是用于初始化的,所以初始化动作一定要执行。否则编译失败。
详细理解:
C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)
封装:
封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。
封装的意义在于保护或者防止代码(数据)被我们无意中破坏。
封装既可以封装成员变量,又可以封装成员方法
=====================================================================================================
封装成员变量 封装步骤:
1、新建类——
面向对象最基本的单元就是类,即一个.cs文件,就像一个文本文档,里面就是放置C#代码
新建一个类:在 解决方案资源管理器 中右键 空间名 → 添加 → 新建项目 或 类 → 命名类
(用户自己写的类 - 用户自定义类型
如果要使用咱们自定义类型产生出来的 对象 必须有一个实例化的过程:类名 定义名 = new 构造函数(); 比如 student st=new student();)
例如创建一个student类:
class 表示类 student 为类名 (创建的类默认的访问修饰符为internal,隐藏显示)
2、写构造函数——
类的基本结构是:构造函数 - 创建一个类的函数(每一个类都有一个构造函数,默认隐藏)
如何将隐藏的构造函数写出来?
图中红色边框区域就是student类的构造函数,此时为public(公共的)
每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致
【什么是public? public是一个 访问修饰符
访问修饰符是定义函数的访问权限和访问等级,访问修饰符有四种:public(公共的)、private(私有的)、internal(内部的)、protected(被保护的)
public - 公共的,任何地方都可以访问,但是需要引用 命名空间
private - 私有的,类的内部才可以访问
internal - 内部的,默认的,程序集中可以访问,程序集就是命名空间
protected - 被保护的,类的内部和类的父类和子类中可以访问】
3、向类中填写信息——
比如:学生信息包括学号、姓名、性别、年龄(_code、_name、_sex、_age 叫做 成员变量)
下划线是为了一会进行封装,此时访问修饰符用的是public,主函数中是可以进行调用和赋值修改的
4、进行封装(固定格式)——
封装方法一:(1)在新建类中,将信息的访问修饰符修改为private,此时主函数中,类的方法无法调用
(2)在新建类中写方法调用函数,写一个public,允许主函数访问调用,类型同上,命名时去掉下划线(封装函数叫 属性)
get 是读取(属性取值) set 是赋值(属性赋值) 此时主函数不能调用_code,而能调用code,但赋值是给_code进行赋值
封装方法二: 点击方法名,右键鼠标 → 重构 → 封装字段 → 对话框无需修改,回车,回车
封装方法三:在方法二中,可以看到 封装字段 后有快捷键 Ctrl+R,E,再按两次回车跳过对话框即完成封装