在C#中,override 和 overload 是两个不同的概念。
-
override 用于派生类中重新定义基类中的虚方法或抽象方法,实现多态性;而 overload 则是在同一个类中定义多个同名方法,但参数列表不同,以提供不同的功能或处理方式。
-
override 是基于继承的概念,用于子类覆盖父类的方法;而 overload 则是在同一类中,方法名称相同但参数不同,主要用于重载同一操作的不同形式。
Override(重写):
-
定义:override 关键字用于在派生类中重新定义(覆盖)基类中的虚方法或抽象方法。
-
用途:主要用于实现多态性,即派生类可以为其基类中的虚方法或抽象方法提供自己的实现。
-
示例:
class Animal
{public virtual void MakeSound(){Console.WriteLine("Animal makes a sound.");}
}class Dog : Animal
{public override void MakeSound(){Console.WriteLine("Dog barks.");}
}class Cat : Animal
{public override void MakeSound(){Console.WriteLine("Cat meows.");}
}class Program
{static void Main(string[] args){Animal animal1 = new Dog();Animal animal2 = new Cat();animal1.MakeSound(); // Output: Dog barks.animal2.MakeSound(); // Output: Cat meows.}
}
Overload(重载):
-
定义:overload 指的是在同一个类中定义多个具有相同名称但参数列表不同的方法。
-
用途:主要用于提供多种方式来处理相似的操作,使代码更加灵活和可读性更好。
-
示例:
class Calculator
{public int Add(int a, int b){return a + b;}public double Add(double a, double b){return a + b;}
}class Program
{static void Main(string[] args){Calculator calculator = new Calculator();int result1 = calculator.Add(3, 5); // Output: 8double result2 = calculator.Add(3.5, 2.5); // Output: 6.0}
}