[DoNet]面向对象基础(C#篇)

二 18th, 2011

Summary:

最近在看设计模式的相关内容,我们都知道要深入了解各模式,其基础就是面向对象的理论,所以我先问温习一下有关面向对象的基础知识。这里是我的一点笔记,比较凌乱,但都是精华。

1. 类与实例:

2. 构成函数:

3. 方法重载: 让类用于同名的多个方法,要求参数类型或者参数个数必须要有所不同才行,方法的重载是让函数具有了可扩展的能力。

4. 属性: 属性是一个方法或者是一对方法(get/set),但是以字段的方式被调用,如a.Prop(). 字段则不然,字段是与类相关的变量.

5. 修饰符: public,private,protected…

6. OOP三大特性之一:封装

  • 可以减少耦合。
  • 类内部的实现可自由修改。
  • 具有清晰的对外接口。

7. OOP三大特性之二:继承(is-a),如B is A,则表明B可以继承A。

  • 子类拥有父类的非private方法。
  • 子类具有自己的属性和方法。
  • 子类还可以以自己的方式实现父类的功能。(override,后面会提到)

     注意: 构造函数不能被继承,只能被调用,用base关键字。

  public Dog(string name):base(name)
  {
  }

   优点:

  • 代码共享,避免重复。
  • 修改或扩展继承而来的实现较容易。

   缺点:

  • 父类变,子类也得跟着变。
  • 继承会破坏包装,父类的实现会暴露给子类,增大这两个类之间的耦合性。

8. OOP三大特性之三:多态。不同的对象要执行相同的动作,但要通过它们自己的实现代码来执行。

  • 虚方法: virtual, 出现在被继承类中。
  • 方法重写: override ,出现在继承类中。

     父类  a = new 子类(); (设计模式中很重要的一个特性)

9. 抽象类:对于实例化无意义的父类,可改为抽象类。

  • 抽象类不能被实例化。
  • 抽象方法必须是被子类重写的方法。(也就是无实现体的虚函数)
  • 类中如果有抽象方法,则该类必须是抽象类。

10. 接口: 封装特定功能的一个集合。(组合公共方法和属性)

  • 不能被实例化
  • 没有构造函数和字段
  • 无修饰符

     抽象类与接口的比较:

  • 类是对对象的抽象,抽象类是对类的抽象,接口则是对行为的抽象。
  • 如果行为跨越不同类的对象,则用接口;对于一些相似的类对象,则用继承抽象类。
  • 抽象类是从子类中发现公有的东西,泛化出父类;而接口则根本不知道子类的存在和方法如何实现。只提供定义。

11. 集合与泛型(泛型的问题就比较大,后期我会补充专门研究泛型的总结文档) 

      ArraryList(C# 2.0之前)===>>>> IList<>(C# 2.0之后)

12. 委托与事件

  • 委托是对函数的封装,可以当作是个方法的特征指定了一个名称。
  • 事件则是委托的一种特殊形式,但发生有意义的事情时,事件对象处理通知过程。

上述的12个要点,都是面向对象的基础,不管是C#还是Java,亦或是其他的面向对象语言,都逃不开这12个要点。这里我只列出我们需要注意的一些地方,没有具体展开并给出实际的例子,在后面的文章中,我会完善上述的这些要点,并给出更详细的介绍。





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51073

订阅本站:http://www.wangyuxiong.com/feed

分类: 语言编程         标签: ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量