Csharp多態的實現(接口)


1.什么是接口

接口可以看做是一個標准, 所有繼承的子類需要按照接口中聲明的方法來

接口用關鍵字 interface 修飾,接口的名字一般是I.........able ,表示我有什么能力

接口一般是在命名空間下的,也就是說跟類是在同一級別的  (接口也可以放在類里面,但是沒有什么意義,因為可以把接口看做是一個特殊的類,類是解決方法,接口也是,所以放在里面沒什么屌意思)

接口里面的方法,屬性不能用public,private等修飾

接口里面的方法不實現,只聲明,真正的實現是在繼承的子類中實現

接口里面只能放屬性,方法,不能放字段

當然,這些都可以在代碼中觀察出來

2.接下來用代碼來實現多態,然后觀察一下,有什么特點

//首先在命名空間下面聲明一個接口
interface Ianimalable
    {
      //接口里面不能有字段,可以有方法,有自然屬性
       void say();
       string name
       {
           get;
           set;
       }
    }


interface Ipersonable
    {
        void hisay();
    }

//一個接口可以同時繼承多個接口    
interface Istudentable : Ianimalable,Ipersonable
    {
        void HIsay();
    }


//在命名空間下面定義一個鸚鵡類,繼承與接口
 class Parrot:Ianimalable
    {
        private string _name;
        public string name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
//下面是顯式接口的調用方法,用下面的格式寫方法體
// 返回值 接口名.函數名(){方法體};
        void Ianimalable.say ()
        {
            Console.WriteLine("我是一個鸚鵡,我叫{0}", name);
        }
    }

//在命名空間下面定義一個狗類,繼承與接口
 class Dog:Ianimalable
    {
        private string _name;
        public string name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
        public void say()
        {
            Console.WriteLine("我是一個狗,我叫{0}", _name);
        }

定義一個接口變量,比如說 Ianimalable animal = new Parrot();     animal = new Dog();        

這里可以看到,接口就像一個特殊的類, 接口不是被實例化,但是可以通過子類間接實例化                

2.1 當繼承接口的子類中的方法名和接口中的方法名一樣的話,這就需要用到顯示接口,這個在代碼中可以看到具體的使用方法

2.2 一個接口可以被多個接口或者多個類繼承, 一個接口可以同時繼承多個接口繼承, 但是一個類不能同時繼承多個類,  一個接口可以同時繼承類和接口, 但是接口一定要在后面

2.3 animal先裝的是鸚鵡類,animal后來裝的是狗類,裝那個類,就表現出那個類的特征

2.4 這樣接口就表現了不同的形態,可以是狗類,可以是鸚鵡類等等, 就實現了多態

 

Csharp多態的實現概述


免責聲明!

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



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