知识大全 编程中如何选择Class, Abstract Class and&n

Posted

篇首语:不要什么话都跟别人讲,你说的是心里话,他们听的是笑话。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 编程中如何选择Class, Abstract Class and&n相关的知识,希望对你有一定的参考价值。

编程中如何选择Class, Abstract Class and&n  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     本文面向的读者 NET 应用程序设计师和程序员

  关键字

  Type– 类型

  Class - 类

  Abstract - 抽象的

  Interface - 接口

  Member - 成员

  Method - 方法

  Property - 属性

  预备知识 在阅读本文时 您应当了解 NET编程的基本知识并且已经掌握Class Abstract Class 和 Interface全部知识 这里我仅简单介绍一下他们的基本知识 本文的例子由C#编写 期望您对C#编程有一定的了解

  正文

  我们无法创建一个Abstract Class或Interface的实例(INSTANCE) 让我们从Abstract Class和Interface的定义来看他们的不同 Abstract Class可以包含Abstract Methods 和 Abstract Properties 也可以包含其他的Members 象正常的Class一样 而Interface只能包含Abstract Methods和Properties(属性) Interface中的所有Methods和Properties不需要加Abstract和Public关键字 因为这两个关键字在Interface中是默认的 举例如下

  

>

  

  通常来讲 在设计时优先考虑使用Class或Abstract Class而不是Interface Interface的主要缺点是灵活性比较差 一旦你定义好了Interface 那么它的Members就固定了 如果你要对已经发布的程序添加新的Method 就会破坏你已经的实现该接口的Type(Class Struct等) 因为你必须在你已有的Type中实现新的方法 否则你的程序将无法通过编译

  

  例如类Car和Train实现了接口Vehicles 现在我们要给接口Vehicles再加一个方法Brake() 如果我们现在编译类Car和Train 编译器将报错

  

>

  如果我们使用抽象类或正常类Vehicles 我们仅仅需要在类Vehicles中添加Brake()方法并且实现这个方法 然后我们根据具体需要来决定是否要覆蓋类Car 或Train中的Brake()方法

  

>

  Class则可以提供更好的灵活性 你可以给Class添加任何Members 只要添加的不是Abstract Method即可(也就是说你要提供一个有具体实现的方法) 这样就不会影响从该Class继承的类 已有代码无需做任何改变

  

  设计原则

  &# ; 优先考虑使用Class或Abstract Class而不是Interface

  &# ; 使用Abstract Class代替Interface来降低Class继承层次之间的耦合关系

  &# ; 使用Interface 如果你需要给一个值类型实现(Value Type 象STRUCT就是值类型)多态继承(Polymorphic Hierarchy) (值类型除了从Interface继承以外 不能从其他Type继承)

cha138/Article/program/net/201311/12850

相关参考