C#:繼承抽象類和接口的區別

摘要: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,而實現接口則不需要。