关于C#中虚方法重载的说明(原创)
在C#中,进行虚方法的重载有些体会,现与大家分享。 首先请大家看看下面的例子, using System;
abstract public class contact { public virtual string prinf() { return ("这是虚方法"); } }
public class class1:contact { public string prinf() { return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法 } } 想要通过编译,只需将prinf的声明改为 public override string prinf() 或 public new string prinf() 但是这两种声明方式是有区别的, 请看下面的例子: using System;
abstract public class contact { public virtual string prinf() { return ("这是虚方法"); } }
public class class1:contact { public override string prinf() { return ("这是新的方法"); } } public class class2:contact { public new string prinf() { return ("这是另一个新的方法"); } } public class text { public static void Main() { contact [] contacts=new contact [2]; contacts[0]=new class1; contacts[1]=new class2; foreach(contact ct in contacts) { Console.WriteLine(ct.printf); } } }
最后我们看到的结果是
这是新的方法 这是虚方法
而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法! 这就是两者的区别!!!
zmsx QQ:286433702 Email:[email protected]

|