在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); } } }