3 回答

TA贡献1802条经验 获得超4个赞
public abstract class Mammal
饲料 配偶
public class Dog : Mammalpublic class Cat : Mammal
public class Giraffe : Mammalpublic class Rhinoceros : Mammalpublic class Hippopotamus : Mammal
Feed()
Mate()
public interface IPettable{ IList<Trick> Tricks{get; set;} void Bathe(); void Train(Trick t);}
public class Dog : Mammal, IPettablepublic class Cat : Mammal, IPettable

TA贡献1785条经验 获得超8个赞
比抽象类更喜欢接口
现有的类可以很容易地进行修改,以实现新的接口。
..您所要做的就是添加所需的方法(如果它们还不存在),并向类声明中添加一个Implements子句。 接口是定义混合器的理想方法。
..松散地说,Mixin是一个类除了它的“主类型”之外还可以实现的类型,以声明它提供了一些可选的行为。例如,可比较是一个混合接口,它允许类声明其实例是相对于其他相互比较的对象排序的。 接口允许构造无层次的类型框架。
..类型层次结构对于组织某些事情是很好的,但是其他的事情并不能整齐地归入一个僵化的层次结构中。 接口支持安全、强大的功能增强。
通过每班包装成语。如果您使用抽象类来定义类型,那么您将使希望添加功能的程序员别无选择,只能使用继承。
此外,您可以结合接口和抽象类的优点,提供一个抽象的框架实现类来与您导出的每个重要接口一起使用。

TA贡献1772条经验 获得超6个赞
添加回答
举报