C 中方法的重寫(實現多型)

2021-09-08 16:08:56 字數 2077 閱讀 8425

問題1:什麼時候要重寫方法?

當子類繼承父類時,子類中方法名稱與父類中方法名稱重名時,需要對父類的方法使用virtual變成虛方法;使用關鍵字override重寫子類方法。

問題2:什麼是重寫?

「重寫」父類方法就是修改它的實現方式或者說在子類中對它進行重新編寫。

練習

static

void

main

(string[

] args)

public class person

set

} public virtual void

show()

}public class teacher:person//子類預設呼叫父類中無參的建構函式,如果父類中只寫有參函式,沒有無參函式,會報紅線

public override void

show()

//呼叫父類方法,但是把父類方法中的內容進行重寫,更換內容

,歲,是生"

, this.name, this.age, this.gender);}

}

拓展:

base:關鍵字用於從子類中訪問父類成員。即使父類的方法在子類中重寫,仍可以使用base關鍵字呼叫。

多型:

多型就是物件可以表現多個型別的能力。

虛方法特點:

1、方法不能用static修飾

2、子類方法的重寫必須與基類的簽名一致。父類中方法必須有virtual,子類中才能使用關鍵字override進行重寫。

3、關鍵字virtual不能與修飾符private一起使用

過載與重寫:

過載是方法的名稱相同,引數型別或引數個數不同,進行過載以適應不同的需求。過載(overload)是面向過程的概念。

重寫是進行基類中函式的重寫。重寫(override)是物件導向的概念。

多型練習

隨機產生10個類的物件 放在陣列裡,遍歷陣列,調出方法。

class program

}for

(int i =

0; i ) console.

readkey()

;}}public abstract class animal//抽象父類

string _name;

public string name

set

} public abstract void

shout()

;}public class pig : animal

public override void

shout()

我是豬"

,this.name );}

}public class dog : animal

public override void

shout()

我是狗"

,this.name );}

}public class cow : animal

public override void

shout()

我是牛"

,this.name );}

}public class cat : animal

public override void

shout()

我是貓"

,this.name );}

}public class bird : animal

public override void

shout()

我是鳥"

,this.name );}

}

常見虛方法

tostring()

class program

}public class person

}

C 通過虛方法實現方法重寫 多型。

class program 希望person存的是哪個類的物件就呼叫哪個類的方法 第一步 將父類中對應方法家virtual關鍵字 變為虛方法 子類可重寫 子類中方法用override關鍵字將父類虛方法重寫 person i say 這句話就體現了多型 public class person publ...

java中方法的重寫

什麼是重寫?在子類中有乙個和父類中方法名相同,引數列表相同,返回值相同的方法,子類重寫了父類的方法。為什麼重寫?因為子類繼承父類以後功能更加強大,父類繼承過來的方法可能滿足不了子類的需求,所以需要方法的重寫。重寫需要用到的註解 override 子類是否重寫父類方法,取決於這個方法是否使用 over...

C 中方法過載與方法重寫區別

方法過載 在乙個類中存在方法名相同 引數列表不同 引數個數或者引數型別不同 返回值型別可以不相同,呼叫的時候根據引數列表的不同來正確呼叫。class program 3 5 7三個整數之和為,3.1 5.2兩個浮點型數之和為 test.add 3,5 test.add 3,5,7 test.add ...