程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 接口的實現(4)

接口的實現(4)

編輯:關於C語言

接口IDerived從接口IBase中繼承,這時接口IDerived的成員方法覆蓋了父接口的成員方法。因為這時存在著同名的兩個接口成員,那麼對這兩個接口成員的實現如果不采用顯式接口成員執行體,編譯器將無法分辨接口映射。所以,如果某個類要實現接口IDerived,在類中必須至少聲明一個顯式接口成員執行體。采用下面這些寫法都是合理的:

//一、對兩個接口成員都采用顯式接口成員執行體來實現。

class C:IDerived
{
 int IBase.P
     get{
       ......//具體的接口實現代碼
       }
     }
     int IDerived.p(){
     ......//具體的接口實現代碼
     }
}

//二、對Ibase的接口成員采用顯式接口成員執行體來實現

class C:IDerived
{
  int IBase.p
     get{
         ......//具體的接口實現代碼
       }
      }
  public int p(){
        ......//具體的接口實現代碼
        }
 }

//三、對IDerived的接口成員采用顯式接口成員執行體來實現

class C:IDerived
{
 public int p
       get{
           ......//具體的接口實現代碼
        }
 }
 int IDerived.p(){
            ......//具體的接口實現代碼
 }
}

另一種情況是,如果一個類實現了多個接口,這些接口又擁有同一個父接口,這個父接口只允許被實現一次。

using System;
interface IControl
{
 void Paint();
}
interface ITextBox:IControl
{
 void SetText(string text);
}
interface IlistBox:IControl
{
 void SetItems(string[] items);
}
class ComboBox:IControl,ITextBox,IListBox
{
 void IControl.Paint(){...}
      void ITextBox.SetText(string text){...}
      void IListBox.SetItems(string[] items){...}
}

上面的例子中,類ComboBox實現了三個接口:Icontrol,ITextBox和IListBox。如果認為ComboBox不僅實現了IControl接口,而且在實現ITextBox和IListBox的同時,又分別實現了它們的父接口IControl。實際上,對接口ITextBox和IListBox的實現,分享了對接口IControl的實現。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved