首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

對接口成員的訪問

     編輯:關於C語言

接口方法調用與索引器訪問規則同類。若底層成員與繼承高層同名,底層覆蓋高層。但接口支援多繼承,兩父接口含同名成員產生二義性 (這也是 C# 取消類多繼承原因之一),需顯式聲明消歧。

範例 1:ISequence 有 Count 屬性,IRing 有 count(int) 方法,IRingSequence 繼承兩者。調用 rs.Count(1) 或 rs.Count=1 產生二義性,必須轉型:((ISequence)rs).Count=1、((IRing)rs).Count(1)。轉型無運行開銷。

範例 2:IInteger.Add(int)、IDouble.Add(double),INumber 繼承兩者。n.Add(1) 二義性 (兩簽名均適用);n.Add(1.0) 僅 IDouble 適用;顯式轉型永不二義性。

多重繼承亦帶來成員訪問問題。IBase.F(int) 在 ILeft 中被 new F 覆蓋,IDerived : ILeft, IRight。調用 d.F(1) 實際調用 ILeft.F;雖 IBase-IRight-IDerived 路徑未覆蓋,但一旦被覆蓋,所有訪問均被攔截。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved