C#中区别多态、重载、重写的概念和语法结构
2009-07-27 18:16
381 查看
重写是指重写基类的方法,在基类中的方法必须有修饰符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();
}
};
格式:
基类中:
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();
}
};
相关文章推荐
- C#中区别多态、重载、重写的概念和语法结构
- C#中区别多态、重载、重写的概念和语法结构
- 6-C#中区别多态、重载、重写的概念和语法结构
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析(转)
- 重写、覆盖、重载、多态几个概念的区别分析
- Java中重载和重写,多态几个概念之间的区别
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- C#中多态、重载、重写的区别