摘要:C#:繼承抽象類和接口的區別
抽象類和接口有很多區別,網上一搜一大片。
本質的理解:抽象類就像父親一樣,你繼承了他,但也可以改變(override/new)一些。而接口更像一個使命,你只能去實現這個使命。繼承和實現是不一樣的,至少出發點不一樣。
因此那些答案也不難理解了,比如接口必須要實現,抽象方法不一定要實現,可以默認的用抽象類的。
public class MyCustomer : Customer, ICustomer
{
public override void Fun()
{
Console.WriteLine("abstract class fun");
}
void ICustomer.Fun()
{
Console.WriteLine("interface class fun");
}
}
public abstract class Customer
{
public abstract void Fun();
}
public interface ICustomer
{
void Fun();
}
因此,在C#中複寫抽象類的抽象方法,編譯器會強調要加override,而實現接口則不需要。