新手小白,立此博客,巩固学习,记录成长,请勿见笑0-0
废话不多说,上代码。
public class Animal{
public virtual void Eat(){
Console.WriteLine ("吃");
}
}
public class Dog:Animal{
//覆盖
public new void Eat(){
Console.WriteLine ("大口啃");
}
public class Cat:Animal{
//重写
public override void Eat(){
Console.WriteLine ("细嚼慢咽");
}
class MainClass {
public static void Main (string[] args) {
Animal a1 = new Dog ();
a1.Eat (); //输出“吃”
Animal a2 = new Cat ();
a2.Eat (); //输出“细嚼慢咽”
}
}
父类的实方法和虚方法都能被子类覆盖,用new关键字。
父类的虚方法能被子类重写,用virtual-override 关键字,是多态。
另外一提,
虚方法和抽象方法的区别在于子类必须重写父类的抽象方法但不必重写虚方法。