【问题标题】:Interface and abstract class in this case本例中的接口和抽象类
【发布时间】:2016-09-21 16:38:32
【问题描述】:

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

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

【问题讨论】:

  • 接口和抽象类是非常不同的东西。不清楚您要问什么或要解决什么问题。
  • 我也站在界面的一边。我向你致敬,兄弟!听起来您刚刚回答了自己的问题:使用符合要求的内容。

标签: c# oop


【解决方案1】:

我同意一个没有具体行为的抽象类似乎有点毫无意义,所以我更喜欢一个接口。

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

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();
    }
}

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2016-09-27
    相关资源
    最近更新 更多