【发布时间】:2011-10-25 20:42:03
【问题描述】:
如果我有一个项目包含类似的类,并且有些可能使用相同的实现,但在大多数情况下,它们会实现自己的方式来处理接口或抽象类中定义的方法。我试图弄清楚接口/抽象类是否更好。如果您只能将抽象类与虚拟抽象方法一起使用,我就不明白接口的意义。
这是一个界面:
public interface IAthlete
{
void Run();
}
这是一个抽象类:
public abstract class Athlete
{
public abstract void Run();
}
这是接口的一个实现:
public class Sprinter : IAthlete
{
public void Run()
{
Console.WriteLine("Running Fast....");
}
}
这里是抽象类的一个扩展:
public class MarathonRunner : Athlete
{
public override void Run()
{
Console.Write("Jogging....");
}
}
现在,如果我决定向接口或抽象方法添加一个名为 Stop 的方法,Sprinter 和 MarathonRunner 都会中断,因为我可以为抽象提供一些默认实现,这似乎是一个更好的选择。我错过了什么吗?
【问题讨论】:
-
我假设我们在这里讨论的是 Java。主要区别在于,在 Java 中,一个类可以实现多个接口,但只能扩展一个超类。因此,接口更加灵活。
-
对不起c#,我会更新标签。
标签: c# oop interface abstract-class