日期:2014-06-10 浏览次数:20601 次
重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。
格式:
基类中:
public virtual void myMethod()
{
}
子类中:
public override void myMethod()
{
}
重写以后,用基类对象和子类对象访问myMethod()方法,结果都是访问在子类中重新定义的方法,基类的方法相当于被覆盖掉了。
重载
用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。
public void test(int x,int y){}
public void test(int x,ref int y){}
public void test(int x,int y,string a){}
重载特征:
I.方法名必须相同
II.参数列表必须不相同,与参数列表的顺序无关
III.返回值类型可以不相同
=========================
但如果有泛型,就要注意了!
多态
c#的多态性主要体现在类的继承上:
子类继承父类的时候,可能出现同名但方法定义不同的情况,
所以在子类中会将原方法覆盖,实现自身的要求
1 /* 2 Function: override 3 */ 4 using System; 5 namespace TestOverride 6 { 7 class Employee 8 { 9 //父类虚方法 10 public virtual void CalculatePay() 11 { 12 Console.WriteLine("Employee"); 13 } 14 } 15 16 //子类继承重写CalculatePay()方法 17 class SalariedEmploy : Employee 18 { 19 public override void CalculatePay() 20 { 21 Console.WriteLine("Salary"); 22 } 23 } 24 25 class AppPay 26 { 27 public static void Main(String[] args) 28 { 29 //父类创建实例 30 Employee employee1 = new Employee(); 31 employee1.CalculatePay(); //Employee 32 33 //子类赋值给父类 34 Employee employee2 = new SalariedEmploy(); 35 employee2.CalculatePay(); // Salary 36 37 //子类创建实例 38 SalariedEmploy employee3 = new SalariedEmploy(); 39 employee3.CalculatePay(); //Salary 40 41 } 42 } 43 } 44 /* 45 Out: 46 Employe 47 Salary 48 Salary 49 */