多態 靜態多態性,重載 同一個方法中有多個相同名稱的方法,但參數不一樣。 在編譯階段(程式未運行的時候),函數之間就產生了一對一的關係。 減少函數的命名,多個相同的函數可以使用相同的命名。 Mathf f = new Mathf(); f.Add(10001); class Mathf { publ ...
多態
靜態多態性,重載
同一個方法中有多個相同名稱的方法,但參數不一樣。
在編譯階段(程式未運行的時候),函數之間就產生了一對一的關係。
減少函數的命名,多個相同的函數可以使用相同的命名。
Mathf f = new Mathf();
f.Add(10001);
class Mathf {
public void Add(float a) {
}
public void Add(float a, float b) {
}
}
動態多態性 重寫
父類使用 virtual 形成虛方法,子類使用override沖洗對父類的方法進行重寫。
Animal a = new BigGoose();
a.Run();// 調用的是BigGoose下的Run函數
Animal b = new TheGiantPanda();
b.Run();// 調用的是Animail下的Run函數
((TheGiantPanda)b).Run();// 調用的是TheGianPanda下的Run函數。
// 父類動物
class Animal {
public virtual void Run() {
Console.WriteLine("父類的邏輯");
}
}
class BigGoose :Animal {
// 沒有對Run進行重寫,使用服了的Run邏輯。
}
class People : Animal {
public override void Run() {
Console.WriteLine("");// 對父類的Run進行重寫,使用自己的邏輯。
}
}
class ChineseAlligator:Animal {
public override void Run() {
base.Run();
Console.WriteLine("自己的邏輯");// 同時使用父類和自己的邏輯。
}
}
class TheGiantPanda:Animal {
public new void Run() {
Console.WriteLine("重定義");// 通過New關鍵字使Run方法實現重定義,當類型為父類調用父類的Run函數,當類型為子類的時候調用的是子類的Run函數。可以在調用前先將類型進行轉換。
}
}
抽象類
抽象類不能進行 New (不能進行實現)。
Window w = new Window();因為是抽象類故不被允許。
Window w1 = new Login();可以進行創建,因為創建的具體實例是Login。
abstract class Window {
// 抽象方法只能存在抽象類中
public abstract void Open();
public abstract void Close();
// 一般方法也可以存在抽象類中
public void Refresh() {
Console.WriteLine("刷新");
}
}
class Login : Window {
// 繼承抽象類必須要實現對應的抽象方法
public override void Close() {
Console.WriteLine("登錄界面打開");
}
public override void Open() {
Console.WriteLine("登錄界面關閉");
}
}
抽象類主要用於程式框架,通常是主程式考慮抽象概念。
本文來自博客園,作者:塢中客,轉載請註明原文鏈接:https://www.cnblogs.com/wuzhongke/p/16550467.html