C# 面向对象设计基础 二(中)
来源:互联网 发布:多目标优化算法 编辑:程序博客网 时间:2024/06/13 17:59
学习《ASP.NET 3.5 开发大全》
一、类的方法
1.给方法传递参数(a.传递值。b.传递对象。c.this关键字。注:this关键字能够访问类成员,当参数名和类成员中字段名称相同时,可以使用this关键字)
2.通过引用来传递参数
通常情况下,方法只能返回一个值,使用ref可可以返回多个值的方法(注:传递一个变量的引用给一个方法)。
3.方法的重载(简单的理解就是:方法名相同,参数类型不同或者个数不同)
a.设计一些相同的方法时,如果只是参数不同,则使用重载。
b.如果为程序添加一个新功能,重载一个方法是不错的选择。
c.如要实现类中相似的功能,则可以考虑使用重载。
二、封装
在C#中,封装就是将类成员中的字段、方法以及属性事件、委托等放在一个公共的结构中。按照一个公共的方法把数据和操作这些数据的方法进行组装(封装),同时为对象指定操作和属性,从而创建了新的数据类型提供给用户使用,而保证了私密的内容不会被用户察觉。
三、属性
属性的无非就是为私有的变量的访问权限做了调整,通过属性来访问用户本不应该访问的私有变量。
四、继承
1.继承的基本概念:在应用程序开发过程中,需要完成功能相近但是实现不同的类来抽象对象的时候,就需要用到继承。
2.创建派生类:创建了派生类,说明了该派生类继承了基类的共有或保护的方法和属性,在派生类中可以无需在声明变量。(使用“:”运算符说明该类是派生自一个基类。例:派生类名后面 :基类名)
注意:当基类的字段或者方法等访问修饰符为public或protected时,继承的派生类可以使用基类的字段或方法。但是当基类的字符按或方法等访问修饰符为private时,继承的派生类不能使用基类的private字段或方法。
3.对象的创建:如果一个派生类的基类有多个构造函数,而开发人员想指定构造函数时,必须使用base关键字。
4.实用抽象类:在类被创建的时候,派生类的构造函数在执行前,会首先执行基类的构造函数。当声明或者设计一个类的结构时,基类往往是不完善的,也不应该把基类的类成员实例化。因为基类的作用是为了整合派生类中公共的相同或相似的属性或字段,而对基类的成员赋值或者创建基类的对象,会使类的结构变得混乱。(注:创建对象时,如果对基类使用abstract关键字,那么编译器会阻止基类的直接实例化,从而可以强制的让开发人员使用正确的类让类层次结构正确并容易阅读。)
5.使用密封类:密封类是一种永远不能做基类的类。其他的类不能从此类派生,从而保证了密封类的密封性和安全性,使用sealed关键字能够创建密封类。(注:注意:设计类的时候,通常情况下是不需要将类设置为密封类的,因为密封类会让类的扩展性非常的差,这个类也无法再次扩展和派生。但是,出于某种目的,当程序块只需要完成某些特定的功能或者在商业上为了保密,则可以使用密封类对类进行密封,保证类的可靠性。)
五、多态
1.抽象方法:抽象方法是一个没有对类成员中方法进行具体实现的一种方法,抽象方法的实现必须让派生类实现。抽象方法不允许有方法体,同样不允许包含括号,只允许声明抽象方法。在派生类中,必须实现基类中的抽象方法。(在派生类中,为了实现抽象的方法,就必须使用override关键字,来表示此方法是对基类的抽象方法的实现。)
2.覆盖:当基类创建了一个方法来描述类对象的时候,派生类的同一方法必须实现不同的细节,那么就可以对基类的方法进行覆盖。当编译器编译代码的时候,会将派生类中的方法覆盖基类的方法,并在派生类中对象运行的时候,执行派生类中的方法,而不会执行基类中的方法。(注意:虽然派生类可以覆盖基类的方法,但是在设计类的时候,推荐使用抽象类或者接口来实现基类,因为这样便于阅读和维护,也提高了代码的安全性。)
3.虚方法的抽象类:(跳过,暂时无法理解)
4.抽象属性
- C# 面向对象设计基础 二(中)
- C# 面向对象设计基础 二(上)
- C# 面向对象设计基础 二(下)
- C#面向对象基础(二)
- C#总结(面向对象基础)中
- 面向对象设计原则(C#版二)
- 大话设计模式之面向对象基础篇(二)
- 面向对象基础(二)
- 面向对象基础(二)
- 程序员_Java基础<二>-面向对象中
- c#面向对象基础
- C#面向对象基础
- c#面向对象基础
- c#面向对象基础
- C#面向对象基础
- C#面向对象基础
- C#面向对象基础
- C#基础-----面向对象
- 在命令行下进行Oracle用户解锁
- nginx配置编译学习
- 自学Linux --- 文件
- java在网页上面抓去邮件地址
- 抽象基类的构造函数和析构函数
- C# 面向对象设计基础 二(中)
- 事务使用时MSDTC不可用解决办法
- wp7模拟器启动时一直显示windows phone emulator is doing a complete as boot的解决方案
- 如何查看一个用户下的所有表的表名?
- Convert a wave image to x-y function matlab
- 如何用VS2010创建一个简单的UI编码测试
- 计算机技术与软件专业资格(水平)考试
- 对两个矛盾的讨论
- cvMatchTemplate中的参数"result"的几点说明