在这种情况下,接口和抽象类

时间:2016-09-21 16:38:32

标签: c# oop

如果我希望任何类继承/实现一些更好的接口或抽象类只包含这些抽象方法并充当接口的方法。我知道接口和抽象类之间的区别很好但是在这种情况下,两者是否具有相同的功能或者有不同的东西?

我认为我们可以随意使用其中一个,但我仍然偏离界面,因为我的目标是强制执行任何类来实现这些方法,这是接口的工作。

1 个答案:

答案 0 :(得分:0)

我同意一个没有具体行为的抽象类似乎有点无意义所以我赞成一个接口。

抽象类在将一些无法覆盖的常见行为与一些可以例如模板方法的元素结合在一起时更有用

public abstract class Base
{
    public void TemplateMethod()
    {
        AbstractMethod1();
        AbstractMethod2();
    }

    public abstract void AbstractMethod1();
    public abstract void AbstractMethod2();
}


public class Concrete : Base
{
    public override void AbstractMethod1()
    {
        Console.Write("Override Abstract Method 1");
    }

    public override void AbstractMethod2()
    {
        Console.Write("Override Abstract Method 2");
    }
}

public class Main
{
    public Main()
    {
        var concrete = new Concrete();
        concrete.TemplateMethod();
    }
}