c#面向对象基础技能——学习笔记(三)基于OOP思想研究对象的【方法】
实例方法:(解决问题的步骤)完成某功能的各种语句的组合
编写方法要考虑的内容:
1、通过项目需求,确定各方法的任务、功能;
2、方法的可访问性(默认是private);(字段private 属性internal 方法private)
3、调用后的返回值结果;
4、起名——动名词结合;
5、确定调用方法的条件(参数:不要多于三个,行数:不要多于40行,可以把大的方法分成多个小方法)。
静态字段:
为了定义能由多个实例共享的数据,需要使用static关键字。
静态字段不从属实例,而是从属类。因此,从类外部访问静态字段是要使用类名。
静态方法:
用static修饰;
项目启动就生成,直到项目关闭,不受垃圾回收机制管制;
不宜过多使用。
静态方法一般无法引用实体方法(由于项目开始就创建,还没创建),要引用就要用new,通过对象方式调用。
静态方法不能直接访问类的实例字段,必须获取类的实例才能调用实例成员(无论该实例成员是方法还是字段)。
静态构造器:考虑以内联(inline)方式初始化静态字段,不要使用静态构造器或者在声明时赋值。
静态属性:使用静态属性比使用公共静态字段好,提供一定程度的封装。
构造器(constructor):构造方法
强制性(如果没有的话,编译器会构造一个.ctor,通过IL DASM查看);如果忘了进行初始化,编译器会在编译时自动添加一个,该构造器不获取参数,称为默认构造器,但是得到的是含有无效姓名的对象(要为所有属性提供有意义的默认值,确保默认值不会造成安全漏洞或造成代码效率大幅下降)。要允许以任意顺序设置属性,即使这会造成对象临时处于无效状态。
一旦为类显式添加了构造器,C#就不再自动提供。
构造器参数(camel)要使用和属性(Pascal)相同的名称,区别仅仅是大小写风格。
要为构造器提供可选参数,用好默认值初始化属性。
创建时,用new关键字调用,无返回值,必须与类名一致,构造器就是有参数的,没有返回类型的方法,方法名必须与类名相同。是“运行时”用来初始化对象实例的方法。
作用:
1、初始化对象方法;
2、传递参数;
3、信息读取,及其他对象初始化任务;
4、如有多个构造方法,用this(参数)方式组合。
用this调用另一个构造器。
初始化器:
作用:进一步简化属性初始化,用{, ,};分割;
优点:无需关心参数顺序和参数个数。
集合初始化器:P167(本质论c#)
终结器:定义在对象销毁过程中发生的事情。
初始化器与构造方法异同
相同点:
1、对象创建时使用;
2、可以完成属性初始化。
不同点:
1、构造方法强制性,对象初始化器无强制性,一般写一个无参数构造方法;
2、构造方法可以完成任何成员初始化,初始化器只能对属性初始化;
3、构造方法提前定义,初始化器无需提前定义。
c#面向对象基础技能——学习笔记(三)基于OOP思想研究对象的【方法】的更多相关文章
- c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...
- c#面向对象基础技能——学习笔记(五)委托技术在开发中的应用
委托 delegate 1.是一种全新的面向对象语言的特性: 2.开发事件驱动程序变得非常简单: 3.简化多线程难度. 理解委托:可以理解成一个方法的指针.(接收的变量是方法) 步骤: 1.声明委托, ...
- JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- Objective-c基础知识学习笔记
Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- angular学习笔记(三十一)-$location(2)
之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
随机推荐
- jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能
▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...
- .NET设计模式访问者模式
一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...
- git远程库GitHub
首先,注册一个GitHub(github.com)帐号,免费获得Git远程仓库 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用 ...
- 跟着老男孩教育学Python开发【第四篇】:模块
双层装饰器示例 __author__ = 'Golden' #!/usr/bin/env python # -*- coding:utf-8 -*- USER_INFO = {} def ch ...
- Java Spring mvc 操作 Redis 及 Redis 集群
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...
- .NET 基础 一步步 一幕幕[数组、集合、异常捕获]
数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...
- 如何使用yum 下载 一个 package ?如何使用 yum install package 但是保留 rpm 格式的 package ? 或者又 如何通过yum 中已经安装的package 导出它,即yum导出rpm?
注意 RHEL5 和 RHEL6 的不同 How to use yum to download a package without installing it Solution Verified - ...
- 编程之美—烙饼排序问题(JAVA)
一.问题描述 星期五的晚上,一帮同事在希格玛大厦附近的"硬盘酒吧"多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:"我以前在餐 馆打工,顾 ...
- Enterprise Solution 进销存管理软件 C/S架构,支持64位系统 物流,资金流,信息流全面集成
定位 Target Customers 中小型生产制造企业,批发零售类,贸易企业 主要模块 Modules 采购.销售.库存.财务账款四大模块,包含企业运作过程中销售.采购.库存各岗位需 ...
- 06. Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 我们先看看画布的魅力: 初始画布 canvas默认是宽3 ...