【发布时间】:2013-01-06 11:47:33
【问题描述】:
我的一些朋友正在互相争论 OOP 的基本概念,是否可以在两个不同的类中重载?
据我了解,重载只能在同一个类中完成,但是当涉及到不同的类时,它被称为覆盖,这是它们之间的主要区别。
我的理解准确吗?
【问题讨论】:
标签: c# asp.net oop loops overloading
我的一些朋友正在互相争论 OOP 的基本概念,是否可以在两个不同的类中重载?
据我了解,重载只能在同一个类中完成,但是当涉及到不同的类时,它被称为覆盖,这是它们之间的主要区别。
我的理解准确吗?
【问题讨论】:
标签: c# asp.net oop loops overloading
重载意味着拥有多个同名的方法。
如果它们之间具有继承关系,则重载可能位于不同的类上。
重写意味着一个类有一个父类,并且具有与基类具有相同签名的方法,它明确希望使用而不是父类中的方法班级。 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) {}
}
【讨论】:
可以在不同的类中重载:
class Class1
{
public void Function1(string param1);
}
class Class2 : Class1
{
public void Function1(string param1, string param2);
}
然后你有 2 个函数 1 的选项
【讨论】:
Class2 因为它派生自 Class1 包含一个 Function1(string param1) 方法,而您正在重载它Function1(string param1, string param2)同班。