C#怎樣區別多態、重載、重寫的概念和語法結構。求各位高手幫忙!!!!
解决方案 »
- 显示内容、声音录制
- 如何把XML文件显示在dataView中?
- 水晶报表 横向 纵向的问题
- 郁闷阿,菜单问题
- 已知命名空间和类名,如何在另一个工程中实例化这个类,取出类属性值?
- 100分求一个排列组合的方案?多谢!
- backgroundworker TargetInvocationException
- 如何实现这个效果:当listview显示不下出现...时,如何让鼠标移过去就显示全部内容(好像是在tooltip中显示)?
- 03年10月NETFrameworkSDK的文档更新,我死活装不上!大家都进来看看
- rainbow在文档中心专栏翻译<<展现C#>>
- D:\计算器\CalcForm\CalcForm\Form1.cs(492): 找不到类型或命名空间名称“txtShow”(是否缺少 using 指令或程序集引用?)
- 求字符串子串时的错误?
格式:
基类中:
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();
}
};