根据我的经验,我认为以下是正确的。如果我遗漏了一个要点,请告诉我。
界面:
接口中声明的每一个方法都必须在子类中实现。接口中只能存在事件、委托、属性 (C#) 和方法。一个类可以实现多个接口。
抽象类:
只有抽象方法必须由子类实现。抽象类可以具有带有实现的普通方法。除了事件、委托、属性和方法之外,抽象类还可以具有类变量。由于 C# 中不存在多重继承,一个类只能实现一个抽象类。
所以即使这种差异也不能解释问题
1)如果你有一个只有抽象方法的抽象类怎么办?这与界面有何不同?
2)如果你在接口中有一个公共变量,那与抽象类有什么不同呢?
所以任何解释都会有不同的帮助。