虚方法:当使用基类引用访问派生对象时,得到的是基类的成员。虚方法可以使基类的引用访问“升至”派生类内
class Program
{
static void Main(string[] args)
{
Son s = new Son();
Person p = (Person)s;
s.print();
p.print();
Console.ReadLine();
}
}
class Person
{
virtual public void print()
{
Console.WriteLine("我是虚方法基类");
}
}
class Son : Person
{
override public void print()
{
Console.WriteLine("我是派生类");
}
}
使用条件:
1、派生类的方法和基类的方法有相同的签名与返回类型
2、基类的方法使用Virtual标注
3、派生类的方法使用override标注
理解:个人觉得,虚方法与覆写方法就是在派生类中覆写方法修改基类的虚方法
虚方法产生的必要性:
当派生类对象被赋值给基类引用时,此时如果通过基类的引用来调用方法时,则调用的是基类的方法。
class Program
{
static void Main(string[] args)
{
Son s = new Son();
s.print();
Person p = s;
p.print();
Console.ReadLine();
}
}
class Person
{
public void print()
{
Console.WriteLine("我是虚方法基类");
}
}
class Son : Person
{
public void print()
{
Console.WriteLine("我是派生类");
}
public void Test()
{
Console.WriteLine("这是测试");
}
}
当时在想如果方法不一样,那么调用派生类是不是就行了,但是尝试的时候发现将派生类赋值给基类的时候,基类的引用也只能引用在基类中的方法,使用虚方法是因为在将派生类的值赋值给基类的对象同时派生类中的方法是对哦基类的重写。
覆写方法:
覆写方法可以在继承的任何层次出现
virtual/override在属性、事件、以及索引器上的用法也是一致的
1561

被折叠的 条评论
为什么被折叠?



