Welcome

首页 / 软件开发 / .NET编程技术 / 关于接口与抽象类

关于接口与抽象类2011-10-30 博客园 ouzi抽象类与接口的不同,请大家参考再谈抽象类与接口的区别,我也就不说了,那什么时候选 抽象类, 又什么时候选接口呢,好现在我来说一种情况。

现在我定义一个人的类,简单起见,我略写,如下:

    public abstract class Person    {        public abstract float GetWeight();}
好了,现在我又有一个歌唱家,显然,他是一个人,好说继承,如下:

    public abstract class Singer : Person    {        public abstract void SingSong();}
现在,我又有一个舞蹈家,显然,这也简单,他也是人,也好说继承,如下:

    public abstract class Dancer : Person    {        public abstract void Dance();}
到现在一切都很好 ,也没有任何的问题,可是,又来了一个人,他说他又会唱歌,又会跳舞,我叫这 个类为SingerDancer,好,我在定义一个类,

    public abstract class SingerDancer : Singer, Dancer
可是这样对吗?C#里面是不准许多继承的,这是不允许编译通过的,从另一个层面讲,这个明显的违 反了单一职责的原则,那这里是不能用抽象类的。

我们再来一个例子:

鸟是可以飞的,这就没有问题,好,先定义 一个类先,如下:

    public abstract class Bird    {        public abstract void Fly();}