大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C#中区别多态、重载、重写

C#中区别多态、重载、重写

关键词:C#重载重写多态  阅读(650) 赞(10)

[摘要]本文是对C#中区别多态、重载、重写的讲解,对学习C#编程技术有所帮助,与大家分享。

重写是指重写基类的方法,在基类中的方法必须有修饰符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#的多态性主要体现在类的继承上:
子类继承父类的时候,可能出现同名但方法定义不同的情况,
所以在子类中会将原方法覆盖,实现自身的要求

 /*
     Function: override
 */
 using System;
 namespace TestOverride
 {
     class Employee
     {
         //父类虚方法
         public virtual void CalculatePay()
         {
             Console.WriteLine("Employee");
         }        
     }
     
        //子类继承重写CalculatePay()方法
     class SalariedEmploy : Employee
     {
         public override void CalculatePay()
         {
             Console.WriteLine("Salary");
         }
     }
     
     class AppPay
     {
         public static void Main(String[] args)
         {
             //父类创建实例
             Employee employee1 = new Employee();
             employee1.CalculatePay();                                     //Employee
                 
             //子类赋值给父类
             Employee employee2 = new SalariedEmploy();
             employee2.CalculatePay();                                     // Salary
             
             //子类创建实例
             SalariedEmploy employee3 = new SalariedEmploy();
             employee3.CalculatePay();                                    //Salary
             
         }        
     }
 }
 /*
 Out:
 Employe
 Salary
 Salary
 */


相关评论