关于虚方法的一个简单示例代码:
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!");
}
}