封装:

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

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

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

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

封装成员变量 封装步骤:

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,再按两次回车跳过对话框即完成封装

5、封装完成

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

修改_sex赋值时set属性

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

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

或者用 <bool?> 可空bool类型:

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

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

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

 

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

封装成员方法 封装步骤:

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

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

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

  1. 面向对象:三大特性、类成员、property

    一.类的基础知识 python 一切皆为对象. 我们以前的str,list,int 都是对象. 1.1 类的定义 与 调用 class 关键字用来定义类,注意类名首字母大写. 类的调用,先实例化一个类 ...

  2. C#基础知识之面向对象以及面向对象的三大特性

    在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...

  3. Java基础—面向对象的三大特性

    面向对象有三大特性分别是继承.封装和多态. (1)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类 ...

  4. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  5. Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

    概念:                                                                                                 ...

  6. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  7. Python 面向对象的三大特性:封装,继承,多态

    # 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到 ...

  8. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  9. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

随机推荐

  1. java 关于多线程高并发方面

    转有关的文章链接: Java 高并发一:前言: http://www.jb51.net/article/92358.htm Java 高并发二:多线程基础详细介绍 http://www.jb51.ne ...

  2. java 26 - 7 网络编程之 TCP协议代码优化

    上次所写的代码中,客户端和服务器端所进行的数据传输所用的是字节流. 优化: A:这次,为了高效,对这个字节流通过转换流来进行包装,包装成高效字符流. B:这次,传输的数据是通过键盘录入的数据. 服务器 ...

  3. linux运维中的命令梳理(三)

    ----------文本操作命令---------- sed命令:文本编辑工具 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特 ...

  4. js函数命名常用动词

    get 获取/set 设置, add 增加/remove 删除 create 创建/destory 移除 start 启动/stop 停止 open 打开/close 关闭, read 读取/writ ...

  5. win7 远程桌面关机

    在任务管理器中, 打开运行窗口, 执行 shutdown -s 命令, 将在30秒后关闭win7, 如果需要更快, 加上 -t 10 参数 关于 shutdown 的命令行说明: C:\Users\R ...

  6. web app iphone4 iphone5 iphone6 iphone6 Plus响应式布局 适配代码

    来源:http://www.phptext.net/article_view.php?id=387 -------------------------------------------------- ...

  7. [java]java语言初探 servlet+jsp架构

    <<head first java>> https://www.tutorialspoint.com/jsp/jsp_architecture.htm JSP Processi ...

  8. linux不同角色server分区方案

    服务器角色 分区建议 优点    RAID方案 单机服务器 如8G内存,300G硬盘        /boot 100-200M swap 16G,内存大小8G*2 / 80G /var 20G(也可 ...

  9. codevs2806 红与黑

    难度等级:白银 codevs2806 红与黑 题目描述 Description 有一个矩形房间,覆盖正方形瓷砖.每块瓷砖涂成了红色或黑色.一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一, ...

  10. linux:手动校准系统时间和硬件CMOS时间

    windows下OS时间和主板CMOS芯片里的时间通常是一致的,但是linux却不一定,在无法联网自动校准时间的情况下,只能手动调整: 查看系统时间 date 调整系统时间 sudo date -s ...