C#:同時繼承含有相同方法簽名的基類和接口,顯示實現接口

摘要:C#:同時繼承含有相同方法簽名的基類和接口,顯示實現接口

基類和接口含有相同方法簽名時,為了避免命名衝突,要顯示實現接口。

    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();
    }

 

實現接口有兩種方式:顯示和隱式

ICustomer.Fun()這種方式為顯示實現,使用時只能如下:

MyCustomer c = new MyCustomer();
((ICustomer)c).Fun();

注意:這種實現不能加public關鍵字,實際上,因為訪問只能通過轉換,就好像這個方法不屬於實現類一樣(事實不是)。

加了public的是實現基類抽象類中的方法。