c 介面多繼承問題?c 怎麼用介面實現 多繼承

時間 2025-04-21 20:41:01

1樓:炒飯君

c#實現多繼承的具體的解決步驟是:

把之前在parenta和parentb中公共的**封裝到basec中,並作為parent的乙個屬性。

把需要重寫的方法applyeditable定義到乙個介面ibasecaction中。(實際上,如果只有乙個方法需要重寫的話,可以不用定義介面,直接在basec中定義乙個action的委託變數就可以了。當然定義介面更方便支援多個重寫方法。

在child類的構造器中,把自己傳給basec的例項化,即 = new basec(this);望!

2樓:一郎大神

事實上是可以不寫的,但是這樣會導致易讀性降低增加維護負擔。

因為ilist實際裡面不會定義icollection和ienumerable的方法,導致你需要更深入的巢狀跟進才能閱讀,就和深層次的繼承乙個道理。

而寫了之後可以根據這些介面一目瞭然的知道這個類具有哪些功能。

所以為了易讀性,少量的冗餘完全可以接受。

3樓:陽光的雷咩咩

你說的對,確實應該是多餘的。

我能想到的唯一好處是萬一以後ilist繼承的介面變了,比如不再實現icollection, ienumerable,不至於影響array的介面。

c#怎麼用介面實現"多繼承"

4樓:鈾氶瓏鈾

主流的答案無非2種。

答案一:用介面啊,乙個類可以繼承自多個介面的。

答案二:c#不支援多繼承,c++才支援多繼承,多繼承會讓**變得很亂,因此微軟在設計c#的時候放棄了多繼承。

c#裡面的介面和繼承好像有些混了,請問它們有什麼區別呢?

5樓:網友

從本質上觀察介面實現和類繼承,這裡「繼承」一詞不包含繼承介面。

繼承,本質是父類有的,子類也有。或者說,繼承,主要目的是為了**重用。

介面,又稱協議,約定。介面本身並不定義任何成員,它只約定一系列方法的方法名和形參、返回型別(他們的組合叫方法簽名),意思就是提供一系列抽象的功能服務。乙個類實現了乙個介面,意味著這個類承諾他要遵守這個介面所定義的約定,提供這個介面所要求的全部功能。

而呼叫方只需知道這個物件遵守了哪個介面的約定,能提供什麼樣的方法/功能,而不必知道關心這個物件屬於哪個型別的。這個叫多型。

從名稱上看,介面實現和類繼承好像都叫「繼承」,但乙個是多型,乙個是**重用,幾乎是乙個問題的兩個極端。

而抽象類則是介乎兩者的折衷,一方面他限制了子類的型別(因為c#只能單繼承),重用了自己的**,另一方面,它多少又定義了一些抽象的方法簽名,保證它的子類能提供某種功能。

6樓:小強強

介面可以多實現。類只能單繼承。介面一般乙個字母為大寫i開頭。實現介面並繼承類的時候順序是。先繼承類。再實現介面。

c#繼承問題

7樓:匿名使用者

c#中類繼承的規則。

1、繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中的成員。object類作為所有類的基類。

2、派生類(子類)應當是對基類(父類)的擴充套件。派生類可以新增新成員,但不能除去已經繼承的成員的定義。

3、建構函式和解構函式不能被繼承。除此以外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類成員的訪問方式只能決定派生類能否訪問它們。

4、派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這並不因為這派生類刪除了這些成員,只是不能再訪問這些成員。(這點需要注意的是,如果是屬性或者方法同名,但是簽名不同,那就不是覆寫,而是過載了)。

5、類可以定義虛方法、虛屬性以及虛索引指示器,它的派生類能夠過載這些成員,從而實現類可以展示出多型性。

6、派生類只能從乙個類中繼承,可以通過介面實現多重繼承。

C 多層繼承問題

include 定義最低層基類first,它作為其他類的基類class first virtual first 定義派生類second,它作為其他類的基類class second virtual public firstvirtual second 定義最底層派生類third class third...

c 中抽象類繼承的程式設計問題,一個C 中關於繼承性和派生類的程式設計問題,求思路

include define pi 3.1415926 class shape shape virtual void printshapename 0 virtual void print 0 virtual double getarea 0 virtual double getvolume 0 c...

1 1 2怎麼用c語言程式設計,1 1 2怎麼用C語言程式設計

農民工談三農 c程式 內容如下 include main 然後按提示輸入 1 1 就會顯示 a b 2 程式設計完成! 曦月 include main include stdio.h main 獵戶座 int a a 1 1 和同人女一張床 include void main include std...