1. 程式人生 > >C#基礎之介面(6)

C#基礎之介面(6)

介面的定義:interface。

什麼是介面? 介面,我的理解是介面是一種規範。就好比,一個生產資料線的廠商有很多,形狀,外觀都不一樣,現在制定了一個規範那就是所有的資料線生產商都必須把產品外觀形狀都設計成長方形。這就給定了一個規範。實際上介面也是在處理程式的效能上也是有所考慮。再舉一個例子,比如一個員工類,裡面定義了欄位,方法以及屬性。每個人都有自己的獨有的部門吧。這時候如果突然加入了一個新員工,那是不是要再重新建一個類設計對應的欄位屬性部門之類的。這就使得程式很繁瑣,在專案開發過程中很容易出錯,如果我們把一個部門提出來,定義一個介面,讓所有的員工實現這個介面,那是不是這個介面就始終是一個並且每個人都只調用一次。。。實際上介面有分隱式介面呼叫和顯示介面呼叫。在開發過程中(小型專案)一般應該是隱式介面呼叫的方法用的比較多,我也是前幾天才發現還有顯示介面呼叫的方法,真是才疏學淺,只是學的皮毛,今天就來記錄一波。

隱式介面呼叫:

定義介面(1)

  //定義介面
    interface IAnimal
    {
        //定義介面方法,不能有方法體,需要呼叫此介面去實現其介面
        void Name();
    }

類繼承介面(2)

    class AnimalCat : IAnimal
    {
        //實現介面的方法
        public void Name()
        {
            Console.WriteLine("我的名字是小貓");
        }
    }
    //繼承介面
    class AnimalDog : IAnimal
    {
        //實現介面的方法
        public void Name()
        {
            Console.WriteLine("我的名字是小狗");
        }
    }

隱式呼叫介面(3)

class Program
    {
        static void Main(string[] args)
        {
            /*
             * 介面實現的方法有兩種:1.隱式、2.顯示
             */
            //通過類呼叫,隱式介面實現(小型專案)
            Console.WriteLine("---------類呼叫----------");
            AnimalCat cat = new AnimalCat();
            AnimalDog dog = new AnimalDog();
            cat.Name();
            dog.Name();

            Console.WriteLine("--------介面呼叫---------");
            //通過介面呼叫
            IAnimal animalcat = new AnimalCat();
            IAnimal animaldog = new AnimalDog();
            animalcat.Name();
            animaldog.Name();
        }
    }

注:隱式介面實現既可以通過類去呼叫也可以通過介面去呼叫。

顯示介面:

    class AnimalPer : IAnimal
    {
        //介面自己呼叫,給定標識
        void IAnimal.Name() 
        {
            Console.WriteLine("顯示介面呼叫的實現");
        }
    }

呼叫:實際上在呼叫的過程中,顯示介面的呼叫只能通過介面去呼叫,如果通過類去呼叫直接就報錯找不到類的方法。。。

    class Program
    {
        static void Main(string[] args)
        {
            //顯示介面實現(只能通過介面呼叫)
            Console.WriteLine("------顯示介面實現-------");
            IAnimal animalper = new AnimalPer();
            animalper.Name();
        }
    }

如果你想要通過類去呼叫也不是不可以只不過需要進行一個強制轉換的操作:

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("------類呼叫顯示介面實現(強制轉換)---");
            AnimalPer animalpers = new AnimalPer();
            // 強制轉換
            (animalpers as IAnimal).Name();
        }
    }

執行效果如下圖: