2

我的一些朋友正在就 OOP 的一个基本概念互相争论,是否可以在两个不同的类中重载?

据我了解,重载只能在同一个类中完成,但是当涉及到不同的类时,它被称为覆盖,这是它们两个之间的主要区别。

我的理解准确吗?

4

2 回答 2

3

重载意味着拥有多个同名的方法。

如果它们之间具有继承关系,则重载可能位于不同的类上。

覆盖意味着一个类有一个父类,并且具有与它明确想要使用的基类相同签名的方法,而不是父类中的方法。C# 使用override关键字来表示这一点。

public class Base
{
  protected virtual void CanBeOverridden() {}

  public void ToOverload() {}

  // An overload of ToOverload in the Base class
  public void ToOverload(int param) {}
}

public class Child : Base
{
  // override
  protected override void CanBeOverridden() {}

  // An extra overload of ToOverload in the child class
  public void ToOverload(string param) {}
}
于 2013-01-06T11:50:34.360 回答
1

在不同的类中可以重载:

class Class1
{
    public void Function1(string param1);
}

class Class2 : Class1
{
    public void Function1(string param1, string param2);
}

然后,您有 2 个 function1 选项

于 2013-01-06T11:52:56.957 回答