重载(overload):
一个类中的方法与另一个方法同名,但是参数列表不同,这种方法称之为重载方法。简易记法:
两同一不同:同类,同名(方法名),不同参。返回结果的类型没有必需要求(可同可异),实例效果如下:
class Program
{
static void Main(string[] args)
{
overLoad load = new overLoad();
Console.WriteLine(load.Speak());
Console.WriteLine(load.Speak("cat"));
Console.WriteLine(load.Speak(3)+":我是重载,返回float类型");
Console.ReadKey();
}
#region 重载:两同一不同(同类、同名、不同参),返回类型随意
public class overLoad //在同类中对Speak方法进行重载
{
public string Speak() //空参,返回string类型
{
return "1:我是重载,返回string类型";
}
public string Speak(string animal) //传入string参数,返回string类型
{
return string.Format( "2:我是重载,返回类型{0}",animal.GetType());
}
public float Speak(float i) //传入float参数,返回float类型
{
return i;
}
}
#endregion
}
运行结果如下:
重写(override):
当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
三同一不同:同名、同参、同返、不同类,执行的方法体不同但返回的结果类型相同
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.Say();
}
public class Animal //父类
{
public virtual void Say() //父类中的方法用virtual、abstract声明
{
Console.WriteLine("Oh~Oh~Oh");
}
}
public class Dog : Animal //子类
{
public override void Say() //重写父类中关键字声明的方法
{
Console.WriteLine("Wang~Wang~Wang");
}
}
}
运行如下: