C 多型的三種實現方式 小結

2022-09-26 01:21:07 字數 1976 閱讀 6117

c#實現多型主要有3種方法,虛方法,抽象類,介面

在父類的方法前面加關鍵字virtual, 子類重寫該方法時在方法名前面加上override關鍵字,例如下面的person類的sayhello方法

class p程式設計客棧erson

string _name;

public string name

//父類方法加virtual,子類用override重寫該方法,就實現了多型

public virtual void sayhello()

}學生類和教師都繼承於person

class student : person

public override void sayhello()

, 我是學生", this.name);

}}class teacher:person

public override void sayhello()

, 我是老師", this.name);

}}然後在main函式中使用多型

student st = new student("李雷");

teacher th = new teacher("井邊君");

person p = 程式設計客棧; //子類物件賦給父類

for(int i = 0; i < p.length; i++)

console.readkey();

本例全部**

using system;程式設計客棧

namespace 多型之虛方法

; //子類物件賦給父類

for(int i = 0; i < p.length; i++)

console.readkey();

}} class person

string _name;

public string name

//父類方法加virtual,子類用override重寫該方法,就實現了多型

public virtual void sayhello()

} class student : person

public override void sayhello()

, 我是學生", this.name);

}} class teacher:person

public o void sayhello()

, 我是老師", this.name);}}}

在類前面加關鍵字abstract,方法前面加abstract,抽象方法不能有函式體。

抽象類的特點:

(1)可以有欄位

(2)可以有非抽象方法

抽象類實現多型的**如下

using system;

using system.collections.generic;

namespace 多型之抽象類

class student : person

}class teacher : person

}class program

console.readkey();}}}

**如下

using system;

using system.collections.generic;

namespace 多型之介面

class gun : iweapon

}class sword : iweapon

}class tank : iweapon

}class program

console.readkey();}}}

介面的特點

(1)介面裡的方法不能有修飾符,預設是public

(2)介面的方法不能有函式體

(3)介面中不能包含示例字段,不能有建構函式

(4)介面裡的方法被繼承的類重寫時,不需要用override關鍵字,介面不能被例項化

(5)介面之間可以繼承,並且可以多繼承;介面不能繼承於類,但是類可以繼承於介面

(6)乙個類可以同時繼承乙個類,並實現多個介面

C 多型三種實現方式

定義 多型的定義簡單來說就是使一條語句有多種狀態。實現方式 多型的實現方式分為三塊 過載 重寫 重定義。下面我們來談一談他們各自的實現方式和實現原理。過載實現方式 過載是在同一作用域內 不管是模組內還是類內,只要是在同一作用域內 具有相同函式名,不同的形參個數或者形參型別。返回值可以相同也可以不同 ...

C 多型 以及實現多型的三種方式

實實在在說多型 c 篇 1.什麼是多型.1 2.多型帶來的好處.1 3.c 中實現多型的方式.1 4.細說用函式過載實現的多型.2 5.細說用模板函式實現的多型.3 6.小結.4 7.細說用虛函式實現的多型.4 7.1.虛函式是怎麼回事.4 7.2.向上轉型.5 7.3.為什麼要用指標或引用來實現動...

C 介面的三種實現方式

原文c 介面的三種實現方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 4...