C# 中關於接口實現、顯示實現接口以及繼承


先列出我寫的代碼:

接口以及抽象類、實現類

  public interface IA
    {
        void H();
    }

    public interface IB
    {
        void H();
    }

    public abstract class D
    {
        public abstract void H();
    }

    public class C : D,IA, IB
    {

        void IA.H()
        {
            Console.WriteLine("all a.h");
        }

        public override void H()//T
        {
            Console.WriteLine("all b.h");
        }
    }

如果類C繼承了抽象類D,那么在類C中可以使用override關鍵字,接口IB調用的也是被覆蓋的方法H(T位置)【可以理解T位置的方法H同時覆蓋了抽象類D中的方法H和實現了接口IB中的方法H】。

如果類C不繼承抽象類D,那么類C中不能使用override關鍵字,override關鍵字只能在繼承抽象類的情況下使用(個人使用之后感覺是這樣的)。

一開始的代碼是這樣的:

    public interface IA
    {
        void H();
    }

    public interface IB
    {
        void H();
    }

    public abstract class D
    {
        public abstract void H();
    }

    public class C : D,IA, IB
    {
        public override void H()
        {
            Console.WriteLine("all h");
        }

        void IA.H()
        {
            Console.WriteLine("all a.h");
        }

        void IB.H()
        {
            Console.WriteLine("all b.h");
        }
    }

顯示實現接口。顯示實現接口時不能在覆蓋的方法或字段上使用訪問權限關鍵字【private、protected、public等】

 

 在不繼承抽象類D的情況下是這樣的:

    public class C : IA, IB
    {
        public void H()//U
        {
            Console.WriteLine("all h");
        }

        void IA.H()
        {
            Console.WriteLine("all a.h");
        }

        void IB.H()
        {
            Console.WriteLine("all b.h");
        }
    }

調用時,接口IA的對象只能訪問IA.H(),接口IB只能訪問IB.H(),訪問不到U位置的方法。只能在實例化類C的情況下才能訪問到U位置的方法H

 

 

 

調用的代碼:

   class Program
    {
        static void Main(string[] args)
        {
            IA a = new C();
            IB b = new C();
            a.H();
            b.H();
            D d = new C();
            d.H();

            C c = new C();

            c.H();
            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }
    }

 

以上就是我個人的小總結,如果有錯,歡迎指正,個人的語文不好。歡迎批評。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM