c 物件導向 繼承

2021-08-21 18:22:14 字數 1757 閱讀 1140

三:繼承

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 程式設計中為什麼要用繼承?在程式設計中,對程式猿來說最想做的就是用盡可能少且高效的 實現想要的功能。就像好多人都不願白手起家一樣,直接繼承父母的財產,使用繼承可以...