C# 虚函数
Contents
当子类继承父类,子类重写父类的方法时,如果使用父类装子类对象 调用重写的方法时 会执行父类中的方法。
可将父类的函数声明为虚函数,子类使用override关键字重写父类方法,调用重写的方法时 会执行子类中的方法。
using System;
namespace csharpleran
{
struct StructTest
{
public class Fater {
public Fater(int i) {
Console.WriteLine(i);
}
public virtual void Eat(string str) {
Console.WriteLine("Fater virtual Eat");
}
public void Eat() {
Console.WriteLine("Fater Eat");
}
}
public class Player : Fater {
/// <summary>
/// 子类调用父类的构造函数
/// </summary>
/// <param name="i"></param>
public Player(int i):base(i)
{
Console.WriteLine("子类子类子类");
}
/// <summary>
/// 调用重载构造函数
/// </summary>
public Player() : this(1) {
}
public override void Eat(string str)
{
Console.WriteLine("Player override Eat");
}
public new void Eat()
{
Console.WriteLine("Player Eat");
}
}
class Program
{
static void Main(string[] args)
{
Fater f = new Player();
f.Eat(); //Fater Eat
(f as Player).Eat();//Player Eat
f.Eat("");//Player override Eat
(f as Fater).Eat("");//Player virtual Eat
}
}
}
}