C 的重寫與多型

2021-10-08 08:12:47 字數 1241 閱讀 6140

重寫也就是,繼承的不同方面,即子類對父類的縱向擴充套件。

(行為改變了,且版本增高了)

下面的例子中,同樣有方法run,但引用vehicle和引用car兩種例項的時候,列印出來的語句是不一樣的。也就是說,用不同型別例項呼叫方法的時候,與例項相關聯的版本就會被呼叫

例如:

static

void

main

(string

args)

class

vehicle

}class

car:

vehicle

}

函式成員(一定是有行為,邏輯的。所以一定不是資料成員)

體現比較多的就是方法和屬性,下面的例子,就是屬性的重寫

static

void

main

(string

args)

class

vehicle

set}

public

virtual

void

run()}

class

car:

vehicle

set}

public

override

void

run(

)}

可見,就是從父類繼承下來的,需要是可見的。如果是private那麼能繼承下來,但是並不能訪問。

簽名要一致,乙個很簡單的例子就是父類的方法後面括號如果定義了乙個引數,那麼子類的裡面,也需要定義同樣的引數,即有同樣的格式

利用父類變數建立子類例項的時候,再利用這個變數去呼叫方法,一定是呼叫的這個子類例項裡面已經被重寫了的方法,而且是繼承鏈裡最新的那一種。

vehicle vehicle =

newcar()

;

是可以,這樣去呼叫的,就可以利用一些子類裡有了的方法。

並且可以強制轉換成這樣

car car =

(car) vehicle;

person[

] p =

newperson[10

];

在person這個陣列裡面可以儲存他的子類的物件,雖然明面是都是person型別的

子類可以賦值給父類

C艹 重寫與多型

1.類成員的 縱向擴充套件 成員越來越多 2.類成員的 縱向擴充套件 行為改變,版本增高 例using system using system.collections.generic using system.linq using system.text using system.threading...

C 多型(重寫與覆蓋)

覆蓋 覆蓋 在子類和父類中,方法名 引數列表和返回值全部相同,構成覆蓋,重寫時子類重寫父類的方法,即子類將父類的方法覆蓋。此時需要使用new關鍵字,隱藏父類的細節 class animal class cat animal 重寫 public class a public class b a sta...

重寫與多型

一.方法重寫規則 1.方法名相同。2.引數列表相同。3.返回值型別相同或者是其子類。4.訪問許可權不能嚴於父類。二.抽象方法 abstract也可用於方法 1.抽象方法沒有方法體。2.抽象方法必須在抽象類裡。3.抽象方法必須在子類中被實現,除非子類是抽象類。三.多型 是具有表現多種形態的能力的特徵。...