C#中区别多态、重载、重写的概念和语法结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重写是指重写基类的方法,在基类中的方法必须有修饰符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();

相关文档
最新文档