C#学习笔记系列
第一章 【C#学习笔记】【StackTrace】
第二章 【C#学习笔记】【Attribute】
第三章 【C#学习笔记】【Interface】
第四章 【C#学习笔记】【GUID】
第五章 【C#学习笔记】【Virtual】
前言
关于C#中虚方法(virtual)详解,与之关联的接口(interface)已经有介绍了,还有抽象类(abstract)和多态我们将在后面的文章中再作详细讲解。
一、virtual介绍
当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法(virtual);
虚方法是使用关键字virtual声明的,虚方法可以在不同的继承类中有不同的实现,即为基类中定义的允许在派生类中重写的方法。
二、虚方法的使用
2.1.声明形式
class Person
{
//访问修饰符 virtual关键字 函数返回类型 函数名(参数表){函数体};
public virtual void IDentity()
{
Console.WriteLine("我是一个人");
}
}
2.2.调用方法
在调用上,使用子类构造的对象调用虚方法,就会调用子类的方法,使用父类构造的对象,就会调用父类的方法;
在基类中声明的虚方法一般在派生类中对其进行调用,会运用到base关键字
当输入访问修饰符和override后,系统会弹出我们刚才编写的虚方法,直接选择自动生成
class Person
{
public virtual void IDentity()
{
Console.WriteLine("我是一个人");
}
}
class Boy:Person
{
public override void IDentity()
{
base.IDentity();
}
}
static void Main(string[] args)
{
Person person = new Person();
person.IDentity();
Boy boy = new Boy();
boy.IDentity();
}
2.3.规则解析
1、虚拟类其实指的是正常类中的虚方法,所以虚拟类可以直接使用实例,这是与抽象类、接口不同的;
2、虚拟方法是在方法前加virtual关键字,对方法进行声明,说明这个方法是虚方法,调用时使用override关键字和base关键字,说明是调用虚方法;
3、虚拟函数和正常函数无区别
4、子类继承虚拟类可以实现虚方法也可以不实现虚拟方法;
5、虚方法可以在不同的继承类中有不同的实现;
6、要注意,只有为虚方法是可以进行重写,不能对非虚方法进行重写;
7、当使用virtual关键字修饰后,不允许再有static、abstract、override修饰符;
三、虚方法的好处作用
当在基类中进行虚方法的定义以后,在派生类中可以对其方法进行调用,而且可以通过重写来改变其中实现的功能来实现自己的一些功能,如果不是虚方法,则必须要重新声明方法在进行自己想要的功能进行编写再进行调用,但是虚方法只需要在派生类中对其进行调用;如果想实现其他的功能可以对其进行方法等的重写,进而实现自己想要的功能,调用基类的虚方法来执行派生类的具体操作。在基类调用时,并不需要知道派生类是怎么实现的,因为不同的派生类实现的方式可能不一样,但调用的方式是一样的,实现了不同的功能;
总结作用:
1、允许子类/派生类进行重写;
2、增加代码的可维护性,脉络更加清晰有条理;
总结
不积硅步,何以至千里