Xai*_*oft 9 c# oop abstract-class interface
如果我有一个包含类似类的项目,有些可能使用相同的实现,但在大多数情况下,它们实现了自己的方法来处理接口或抽象类中定义的方法.我试图弄清楚接口/抽象类是否更好.如果你可以使用虚拟抽象方法的抽象类,我不明白接口的意义.
这是一个界面:
public interface IAthlete
{
void Run();
}
Run Code Online (Sandbox Code Playgroud)
这是一个抽象类:
public abstract class Athlete
{
public abstract void Run();
}
Run Code Online (Sandbox Code Playgroud)
这是接口的实现:
public class Sprinter : IAthlete
{
public void Run()
{
Console.WriteLine("Running Fast....");
}
}
Run Code Online (Sandbox Code Playgroud)
这是抽象类的扩展:
public class MarathonRunner : Athlete
{
public override void Run()
{
Console.Write("Jogging....");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我决定向接口或抽象方法添加一个名为Stop的方法,Sprinter和MarathonRunner都会中断,因为我可以提供一些默认的抽象实现,这似乎是一个更好的选择.我错过了什么吗?
接口和抽象超类之间有两个主要区别:
抽象类
接口