C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)

封装:

封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。

封装的意义在于保护或者防止代码(数据)被我们无意中破坏。

 

封装既可以封装成员变量,又可以封装成员方法

 

=====================================================================================================

封装成员变量 封装步骤:

1、新建类——

面向对象最基本的单元就是类,即一个.cs文件,就像一个文本文档,里面就是放置C#代码

新建一个类:在 解决方案资源管理器 中右键 空间名 → 添加 → 新建项目 或 类 → 命名类

(用户自己写的类 - 用户自定义类型    

如果要使用咱们自定义类型产生出来的 对象 必须有一个实例化的过程:类名 定义名 = new 构造函数(); 比如 student st=new student();)

例如创建一个student类:

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第1张图片

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第2张图片

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第3张图片

class 表示类  student 为类名 (创建的类默认的访问修饰符为internal,隐藏显示)

 

2、写构造函数——

类的基本结构是:构造函数 - 创建一个类的函数(每一个类都有一个构造函数,默认隐藏)

如何将隐藏的构造函数写出来?

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第4张图片

图中红色边框区域就是student类的构造函数,此时为public(公共的)

每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致

【什么是public? public是一个 访问修饰符

访问修饰符是定义函数的访问权限和访问等级,访问修饰符有四种:public(公共的)、private(私有的)、internal(内部的)、protected(被保护的)

public - 公共的,任何地方都可以访问,但是需要引用 命名空间
private - 私有的,类的内部才可以访问

internal - 内部的,默认的,程序集中可以访问,程序集就是命名空间
protected - 被保护的,类的内部和类的父类和子类中可以访问】

 

3、向类中填写信息——

比如:学生信息包括学号、姓名、性别、年龄(_code、_name、_sex、_age 叫做 成员变量

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第5张图片

 

下划线是为了一会进行封装,此时访问修饰符用的是public,主函数中是可以进行调用和赋值修改的

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第6张图片

 

4、进行封装(固定格式)——

封装方法一:(1)在新建类中,将信息的访问修饰符修改为private,此时主函数中,类的方法无法调用

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第7张图片    C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第8张图片

(2)在新建类中写方法调用函数,写一个public,允许主函数访问调用,类型同上,命名时去掉下划线(封装函数叫 属性

get 是读取(属性取值) set 是赋值(属性赋值)  此时主函数不能调用_code,而能调用code,但赋值是给_code进行赋值

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第9张图片   C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第10张图片

封装方法二: 点击方法名,右键鼠标 → 重构 → 封装字段 → 对话框无需修改,回车,回车

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第11张图片

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第12张图片

封装方法三:在方法二中,可以看到 封装字段 后有快捷键 Ctrl+R,E,再按两次回车跳过对话框即完成封装

 C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第13张图片

5、封装完成 

 

此时存在一个问题,性别除了输入男或女,但是输入其他信息仍可以进行赋值,如何只能赋值男和女?

修改_sex赋值时set属性

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第14张图片C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第15张图片

 

因为性别只有男女两个选项,可以用bool类型返回true或flase来显示男女,比如true是男,false是女

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第16张图片

输入的是男或女,_sex接收的确实true或false,所以将输入的文字转换成bool类型,此时_sex无法接收除了true和false意外的数据,所以错误

或者用 可空bool类型:

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第17张图片

正常使用时,输入错误默认返回true

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第18张图片

 

此时,函数中只有 set 没有 get ,此时的函数只能赋值,不能进行取值

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第19张图片

那么如何取值呢?添加一个新的函数Sex1,get 返回值 return _sex,如果是true返回“男”,如果是false返回“女”,此时主函数访问的是Sex1

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第20张图片 C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第21张图片

=====================================================================================================

封装成员方法 封装步骤:

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第22张图片C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)_第23张图片

方法又分为普通方法和静态方法

=====================================================================================================

 

转载于:https://www.cnblogs.com/qq450867541/p/6108019.html

你可能感兴趣的:(C#-面向对象的三大特性——封装(封装成员变量、封装成员方法))