题目描述
创建一个虚方法和一个非虚方法,然后分别通过另一个类继承,并比较它们的调用结果。(控制台应用程序)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 虚方法 { class class1 { //默认的方法被指定为私有的,只能在当前类中进行访问,默认private //需要在其他类中访问,就需要将其指定为public:访问权限最高,只要在项目内部都可以进行访问 //virtual关键字必须位于void前 public virtual void virtualMethod()//虚方法能够在派生类中重写 { Console.WriteLine("这是一个虚方法"); } public void nonVirtualMethod() { Console.WriteLine("这是一个非虚方法"); } } class class2 : class1//将class2继承与class1 { public override void virtualMethod() { Console.WriteLine("这是一个新写的虚方法"); } public new void nonVirtualMethod() { Console.WriteLine("这是一个新的方法"); } } class Program { static void Main(string[] args) { class1 c1 = new class1();//将类进行实例化 c1.virtualMethod(); c1.nonVirtualMethod(); class2 c2 = new class2(); c2.virtualMethod(); c2.nonVirtualMethod(); c1 = c2; c1.virtualMethod(); c1.nonVirtualMethod(); Console.ReadKey(); } } }
***非虚方法的实现是一成不变的:无论该方法在声明它的类的实例上调用还是在派生类的实例上调用,实现均相同。与此相反,虚方法的实现的过程称为重写(overrride)该方法。