問題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 ...