c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量):
字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是字段)要将字段封装成属性,而不是公有字段,故不应被声明为public或protected,(通常)用private修饰。
camel命名法;属性应使用LastName和FirstName这类表示名词、名词短语或者形容词形式的名称。
可以被赋值也可以取值;
要一直使用属性,不要直接调用字段。许多时候,即使在属性所在的类中,也不应该从属性实现的外部访问它的支持字段。这样一来,只要为属性添加代码(如验证代码),整个类就可以马上利用这些代码。
在对象创建过程中,首先被创建。(构造方法:主要完成初始化赋值,内容可以是其他方法的调用;字段首先被初始化)。
要为永远不变的值使用常量字段。const
属性(property):(接口:是外界操作、访问私有字段的入口,本身不保存数据)
在OOP中,主要用属性描述静态特征;用Pasal命名法;数据类型与字段一致;一般public。
特征:
使用属性避免非法数据,可以通过属性过滤,约束保护数据,也可以添加业务逻辑;
get取值,set赋值;
可以设置只读属性,保护数据(去掉set),可以替代readonly,也可以只写;
可以单独存在(与字段区别),可以不是返回私有字段值,可以调用一些方法或添加业务逻辑。
自动实现属性:标准属性,无业务逻辑。输入prop,然后连按两下tab.会自动生成get和set.只需要修改下属性名即可。
不要提供只写属性,也不要让属性的赋值方法的可访问性比取值方法更宽松。
访问修饰符(access modifier)——(public 、private、 protected、internal 和 protected internal)
目的:开发中,一些成员(字段,属性,方法)无需提供给调用者;
好处:充分体现面向对象里面的“封装”特性 (OOP三大特性:封装,继承,多态);
作用:保证数据安全,方便调用者使用(成员过多,调用者识别困难)。
类型:
private;public;默认字段是private,方法是internal。
调用ArgumentException()或ArgumentNullException()构造器时,要为paramName参数传递“value”(value是属性赋值方法隐含的参数名)
c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】的更多相关文章
- c#面向对象基础技能——学习笔记(三)基于OOP思想研究对象的【方法】
实例方法:(解决问题的步骤)完成某功能的各种语句的组合 编写方法要考虑的内容: 1.通过项目需求,确定各方法的任务.功能: 2.方法的可访问性(默认是private):(字段private 属性int ...
- c#面向对象基础技能——学习笔记(五)委托技术在开发中的应用
委托 delegate 1.是一种全新的面向对象语言的特性: 2.开发事件驱动程序变得非常简单: 3.简化多线程难度. 理解委托:可以理解成一个方法的指针.(接收的变量是方法) 步骤: 1.声明委托, ...
- STM32学习笔记(二) 基于STM32-GPIO的流水灯实现
学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...
- Unity基础知识学习笔记二
1,object Instantiate(object original,Vector3 position,Quaternion rotation) 克隆原始物体,并返回克隆物体. ...
- 换个角度看Salesforce之基础配置学习笔记(二)
1. 登录后无法使用Developer Console? 先找到当前登录用户的Profie,然后勾选Profile中的View All Data(Modify All Data)即可: 2. Pers ...
- linux基础命令学习笔记(二)
linux基础命令学习笔记(二) 1.kill :终止进程 kill pid (唯一标示一个进程) kill -9 强制终止 kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
- Objective-c基础知识学习笔记
Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
随机推荐
- 使用cmake自动构建工程
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...
- javascript 判断参数类型大全
js 判断类型的在开发中是很常用的,因为js 是弱类型的语言,var 可以接受任何形式的类型,但是在真正的开发中,我们需要根据不同类型做不同的处理,所以这个是必须的精通. 首先需要知道 typeof这 ...
- [LintCode]——目录
Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...
- 游走 bzoj 3143
游走(2s 128MB)walk [问题描述] [输入格式] [输出格式] [样例输入] 3 3 2 3 1 2 1 3 [样例输出] 3.333 [样例说明] 题解: 主要算法:贪心:高斯消元: 题 ...
- iOS 自定义方法 - 不完整边框
示例代码 ///////////////////////////OC.h////////////////////////// //// UIView+FreeBorder.h// BHBFreeB ...
- Linux系统中的Device Mapper学习
在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. ...
- 【Star CCM+实例】开发一个简单的计算流程.md
流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...
- requests源码阅读学习笔记
0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...
- CSS命名规范——BEM思想(非常赞的规范)
人们问我最多的问题之一是在CSS类名中“--”和“__”是什么意思?它们的出现是源于BEM和Nicolas Gallagher... BEM的意思就是块(block).元素(element).修饰符( ...
- DBCP 配置备注
<property name="initialSize" value="5"></property> <property name ...