三:繼承
1.繼承的型別:實現繼承和介面繼承
2).介面繼承:表示乙個型別只繼承函式的簽名,沒有繼承任何實現**。在需要指定該型別具有某些可用的特性時,最好使用這種型別的繼承。
2.多重繼承
c#不支援多重繼承,為簡化**的繁瑣,可以允許型別派生自多個介面---多重介面繼承。這說明c#可以派生自另乙個類和任意多個介面。準確地說,system.object是乙個公共的基類,所以每個c#(除了object之外)都有乙個基類,還可以有任意多個基介面。
3.實現繼承
如果要宣告派生自另乙個類的乙個類,就可以使用下面的語法:
class myderivedclass : mybaseclass
如果類(或 結構)也 派生 自接 口,則用逗號分隔列表中的基類和接 口:
public class myderivedclass: mybaseclass , iinte***ce1 , iinte***ce2
下面寫個例子,
基類敵人類( hp speed 方法 ai move )
派生出來兩個類
boss類
type1enemy類
type2enemy類
具體實現如下:
1).先建立乙個enemy怪物類
class enemy
set
}public float speed
set
}public void ai()
public void move()
2).在建立乙個boss類繼承自enemy基類
class boss : enemy
public void attack()
}3).在建立type1enemy,type2enemy繼承自enemy
class type1enemy:enemy
class type2enemy:enemy
4).然後在program下實現
class program
4.虛方法
把乙個基類函式宣告為virtual,就可以在任何派生類中重寫該函式:
class mybaseclass }
在派生類中重寫另外乙個函式時,要使用override關鍵字顯示宣告
class myderivedclass:mybaseclass }
我們在子類裡面重寫虛函式之後,不管在**呼叫都是呼叫重寫之後的方法
5.隱藏方法
如果簽名相同的方法在基類和派生類中都進行了宣告,但是該方法沒有分別宣告為virtual和override,派生類就會隱藏基類方法。(要使用new關鍵字進行宣告) 基類
class mybaseclass }
派生類(在派生類中把基類同名的方法隱藏掉了)
class myderivedclass :mybaseclass }
注意:只是把父類中的方法隱藏了,看不到了,實際這個方法還是存在的
6.this和base關鍵字
this可以訪問當前類中定義的字段,屬性和方法,有沒有this都可以訪問,有this可以讓ide-vs編譯器給出提示,另外當方法的引數跟字段重名的時候,使用this可以表明訪問的是類中的字段,base可以呼叫父類中的公有方法和字段,有沒有base都可以訪問,但是加上base.ied工具會給出提示,把所有可以呼叫的字段和方法羅列出來方便選擇
例如:this.ai; base.ai;
C 物件導向 繼承
一 通過繼承 inheritance 可以在建立新類時復用 擴充套件和重寫已在其它類中宣告的可訪問的例項成員 除建構函式和析構函式外 類完全支援繼承,可以繼承自類也可以實現介面,結構不支援繼承,只可以實現介面 繼承是通過派生 derivation 實現的,被繼承的類稱為基類 base class 繼...
物件導向c 之繼承
物件導向三大機制包括 1.封裝,隱藏內部實現。2.繼承,復用現有 物件導向最顯著的特徵 3.多型,改寫物件行為。繼承,是一種復用的手段。是從先輩處得到屬性和行為特徵。類的繼承就是新的類從已 有 的類那裡得到已有的特徵。類成員的訪問限定有三種 public,protected,private,在類外可...
c 物件導向之繼承
1 什麼是繼承?繼承簡單來理解就是子承父業,也即是孩子可以直接使用父親的東西,這樣自己就可以少奮鬥一些,父親有的東西可以直接拿過來用。2 程式設計中為什麼要用繼承?在程式設計中,對程式猿來說最想做的就是用盡可能少且高效的 實現想要的功能。就像好多人都不願白手起家一樣,直接繼承父母的財產,使用繼承可以...