C#怎樣區別多態、重載、重寫的概念和語法結構。求各位高手幫忙!!!!

解决方案 »

  1.   

    重写是指重写基类的方法,在基类中的方法必须有修饰符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#的多态性主要体现在类的继承上:
    子类继承父类的时候,可能出现同名但方法定义不同的情况,
    所以在子类中会将原方法覆盖,实现自身的要求.  using System;class Employee
    {
        virtual public void CalculatePlay()
        {
            Console.WriteLine("Employee");
        }  
    };
    class SalariedEmployee: Employee
    {
        override public void CalculatePlay()
        {
            Console.WriteLine("Salary");
        }
    };
    class PolyApp
    {    public static void Main()
        {
            Employee baseE1 = new Employee();
            baseE1.CalculatePlay();        Employee baseE2 = new SalariedEmployee(); 
            baseE2.CalculatePlay();        SalariedEmployee s = new SalariedEmployee();
            s.CalculatePlay();
        }
    };