關於虛方法的一個簡單示例代碼:
Person p1 = new Student();
p1.Say();
1、父類引用p1訪問子類對象,p1只能訪問子類繼承自父類的成員!引可以入虛方法後可以解決這個問題
2、p1.Say(); 這裏的Say()是父類中的方法,如果沒有虛方法,則會調用父類中Say()輸出:"I am Person!";引入虛方法後,調用子類中的Say()輸出"I am Student!"。
namespace test
{
class Program
{
static void Main(string[] args)
{
Person p1 = new Student();
p1.Say();
Console.ReadKey();
}
}
}
class Person
{
public Person()
{
Console.WriteLine("我是Person構造函數,我是一個人!");
}
public virtual void Say() //父類的方法使用virtual關鍵字
{
Console.WriteLine("I am Person!");
}
}
class Student : Person
{
public Student()
{
Console.WriteLine("我是Student構造函數,我是一個學生!");
}
public override void Say() //子類的方法使用virtual關鍵字
{
Console.WriteLine("I am Student!");
}
}
class SeniorStudent : Student
{
public SeniorStudent()
{
Console.WriteLine("我是SeniorStudent構造函數,我是一個高中生!");
}
public void Say()
{
Console.WriteLine("I am SeniorStudent!");
}
}