一、关于类与对象
1、为什么要学习面向对象编程? 答:面向过程编程,很难解决复杂业务逻辑和适应业务需求的变化。而面向对象能够将程序很好的"模块化设计",清晰的"分层组合",方便的"业务扩展"。
2、程序观察 结论:我们学习面向对象编程主要学习什么? 主要是学习面向对象编程的原则、方法、技巧、模式、经验等。
3、从生活中的"类"转换到程序中的"类" 答:生活中很多东西都可以归为一个类。比如人:(男人、女人)
而软件中的类,是为了处理相关的数据。 比如学校:学号、姓名、性别、班级、电话、地址… 比如公司:编号、姓名、性别、部门、电话、地址、邮件...
静态属性:描述对象的基本特征信息(数据)(属性) 动态行为:描述这个对象能做什么,如何做?(方法)
类的基本概念:就是把一个事务中,我们所要关心特性和行为抽取出来,组合到一起,就称为一个类。
4、类的规范(组成)
访问修饰符 class 类的名称 { //字段部分 //属性部分 //方法部分 }
特别提示:一个类可以只有属性、只有方法、也可以属性、方法全部都有,但是不建议添加只有字段的类。
二、体验类与对象的使用
首先要清楚:类只是规定了,它能存储什么类型的数据、能够完成什么任务,但是没有具体的数据。
C#编程类与对象的使用以及字段和属性的对比
类本身也是一种数据类型(自己定义的数据类型)
对象创建:以类为模板,给他赋值具体的数据。
特别的:使用new关键字,会将类调都内存中,从而以对象形式存在。 对象的属性:对象名.属性名=值;
对象的方法:对象名.方法名(参数…);
C#编程类与对象的使用以及字段和属性的对比
总结 【1】访问修饰符:默认是internal (内部的),只能在当前程序集内部使用这个类(类库、exe可启动项目);public:公共的,可以在程序集外面使用。 【2】类的名:使用pascal命名法(首字母大写)。
三、属性(Property) 1、使用ILDasm反汇编工具发现get和set其实是两个方法,并且每一个属性都有对应的私有字段。
2、断点观察get和set发现,当我们给属性赋值的时候,其实是调用set方法,给对应的私有字段赋值;当读取属性值的时候,其实是调用了get方法,从对应的私有字段里面把值取出来。
属性:本身其实并没有保存数据,数据是保存到属性对应的私有字段中。 属性作用:其实是外接访问对象数据的"入口"。像USB接口一样,数据保存到哪里?在存储芯片。
记住:属性是为了更好的实现需求的变化的扩展,从而让一个属性可以实现多样的需求!
C#编程类与对象的使用以及字段和属性的对比
3、属性的扩展
C#编程类与对象的使用以及字段和属性的对比
【1】增加业务判断逻辑。
C#编程类与对象的使用以及字段和属性的对比
【2】设置只读字段功能。
C#编程类与对象的使用以及字段和属性的对比
【3】设置只读业务逻辑。(可以没有私有字段)
C#编程类与对象的使用以及字段和属性的对比
4、属性使用是必要的
测试:基于dgv数据显示,测试属性绑定的重要性。
C#编程类与对象的使用以及字段和属性的对比
5、属性和字段对比 【1】字段,又称为"成员变量" 第一、目的:字段是为类的内部方法,或者方法之间传递数据使用,强调对内使用; 第二、修饰:字段一般用private修饰,很少用public; 第三、读写:字段可以读写均可,也可以用readonly限制为只读,但是不能添加业务。 【2】属性 第一、目的:属性是对外提供数据访问、本身不保存数据,强调对外使用; 第二、修饰:属性都是public,从来不用private; 第三、读写:属性可以轻松的实现单独读写控制,并且可以添加任意需要的业务逻辑; 第四、强制:dgv列表必须强制使用属性,不能使用公有字段。
C#编程类与对象的使用以及字段和属性的对比
6、属性使用的新特性扩展(4.6或以上版本) 【1】属性直接初始化 【2】属性表达式
C#编程类与对象的使用以及字段和属性的对比
补充:使用属性的时候,有的地方也可以用方法代替,但是我们设计的时候,如果你侧重的是属性(比如你需要在dgv中显示)就要用属性,如果是单独的行为,可以用方法。
C#编程类与对象的使用以及字段和属性的对比
7、对象类型的属性使用 总结:类本身就是一种数据类型(引用类型),所以,类中的属性或者变量(成员变量、局 部变量)也可以是类类型(对象类型),开发中还会出现"集合对象"类型。
例如:一个设备,对应一个传感器,属性就要用类类型。一个设备,对应多个传感器,属性就要用类类型数组。
C#编程类与对象的使用以及字段和属性的对比
C#编程类与对象的使用以及字段和属性的对比
C#编程类与对象的使用以及字段和属性的对比
免责声明
1、在本论坛发布的言论仅代表其个人意见和观点,与本站立场无关。
2、用户违规操作所产生的一切后果与本站无关,由用户自行承担。
3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任。
4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利。
5、本网站管理员有权保留或删除本站内的任何内容。
6、用户在本站发表的内容,本站有权在网站内外转载、引用或编辑后重新发布。
7、本站所有内容均为网友发布,如有侵权之处请联系我们删除处理。
本文地址: https://skillwang.com/thread-118-1-1.html
|