- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类的设计、构造函数和静态方法
类的设计、构造函数和静态方法 福建农林大学软件人才培养基地 王春龙 内容提要 类的设计 主要谈设计类的时候会遇到的一些问题 构造函数 主要谈构造函数的几种形态 静态变量与方法 主要谈静态方法静态变量的应用 类的设计 问题一: 如何发现类? 有效方法: 头脑风暴法,发现实体类。 CRC卡片与角色扮演,发现概念类。 UML顺序图,发现概念类。 类的设计 问题二: 如何设计类的成员变量? 有效方法: 尽可能私有(private),或者保护(protected) 如果变量众多,但特征不相似,请考虑分成若干个类。 类的设计 问题三: 如何设计类的方法? 有效方法: 方法数不要太多。(No Superman) 每个方法的代码不宜过长。 类的使用者立场 类的设计 问题四: 如何使用继承? 有效方法: 用继承表达行为的差异,而属性(成员变量)表达状态的差异。 可以用组合在一定程度上代替继承。 哪个方法更自然更符合逻辑,即用哪个。 继承写法: public class 轿车:汽车 { } 类的设计 问题五: 如何使用属性(property)? 有效方法: 并非所有的成员变量都要用属性(property)表示。 存在数据有效性问题的成员变量推荐使用属性表示。 类的设计 问题六: 何时使用接口何时用抽象类? 有效方法: 多用Interface,少用抽象类。(模式例外) 接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。 封装的进阶概念: 公开公共接口,隐藏内部实现。 类的设计 问题七: 还有什么? 有效方法: 提前了解全局,再深入细节,避免分析瘫痪。 首先是正确运行,然后才是优化,警惕过早优化。 良好的注释,代码的自说明性,阅读代码的时间比写代码的时间多得多。 构造函数 构造函数的形态 构造函数的重载 构造函数 构造函数的相互调用 初始化列表? C#中通过Base关键字对基类提供初始化。 class?Employee {public?Employee(string?name,?int?age){????????????Console.WriteLine(This?is?Employee.\nname?:{0},?age:{1},?name,?age);} } class?Leader:Employee {public?Leader(string?name,?int?age):base(hello,?55){????????????Console.WriteLine(This?is?Leader.\nname:{0},?age{1},?name,?age);} } 构造函数 构造函数的执行顺序 父类?子类 容器?内容物 析构函数? 类名前加~,无参,不能重载。 析构函数的执行次序:子类?父类,容器与内容物的顺序不定。 显式析构与自动垃圾回收。 构造函数 静态构造函数 仅能对类的静态成员变量操作 在应用程序启动后,第一次使用该类前运行*。 有显式与隐式两种表现形式。 构造函数 拷贝构造函数? C#不存在缺省的拷贝构造函数 C#强烈建议使用ICloneable接口实现拷贝操作。 有关拷贝的讨论见之前的面向对象语法基础课程。 构造函数 构造函数私有化? 构造函数的访问权限设置: public 正常用法 protected 仅派生类可访问构造函数? private 仅该类本身可访问构造函数? 都是不能new了,如何才能创建实例? 结合静态方法完成。 静态变量与方法 重要概念: 数据成员: 数据成员可以分静态变量、实例变量两种.静态成员:静态成员变量是和类相关联的,可以作为类中共有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问. 实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在. 静态变量与方法 重要概念: 函数成员:方法可以主要分为静态方法,实例方法 静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给静态方法。静态方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。 实例方法:一个实例方法的执行与特定对象关联,他的执行需要一个对象存在。实例方法可以直接访问静态变量和实例变量。 静态变量与方法 静态变量与方法的主要用途: 用途一:类的实例计数器。 注意配合析构函数 静态变量与方法 静态变量与方法的主要用途: 用途二:取代new。 单件模式 思考,从单件类派生的类还是单件否? 静态变量与方法 静态变量与方法的主要用途: 用途三:对系统层等进行的访问。 静态方法是不
文档评论(0)