本文面向的读者:.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则可以提供更好的灵活性。你可以给class添加任何members,只要添加的不是abstract method即可(也就是说你要提供一个有具体实现的方法)。这样就不会影响从该class继承的类,已有代码无需做任何改变。
设计原则
• 优先考虑使用class或abstract class而不是interface。
• 使用abstract class代替interface来降低class继承层次之间的耦合关系。
• 使用interface,如果你需要给一个值类型实现(value type, 象struct就是值类型)多态继承(polymorphic hierarchy)。(值类型除了从interface继承以外,不能从其他type继承)。
• 在需要多重继承的情况下,可以考虑使用interface。
参考目录:microsoft .net development series, framework design guidelines
(责任编辑:徐培炎)