【问题标题】:Is overloading possible in two different classes是否可以在两个不同的类中重载
【发布时间】:2013-01-06 11:47:33
【问题描述】:

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

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

我的理解准确吗?

【问题讨论】:

    标签: c# asp.net oop loops overloading


    【解决方案1】:

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

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

    重写意味着一个类有一个父类,并且具有与基类具有相同签名的方法,它明确希望使用而不是父类中的方法班级。 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) {}
    }
    

    【讨论】:

      【解决方案2】:

      可以在不同的类中重载:

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

      然后你有 2 个函数 1 的选项

      【讨论】:

      • 我不同意这是考虑在 2 个不同的类中重载...Class2 因为它派生自 Class1 包含一个 Function1(string param1) 方法,而您正在重载它Function1(string param1, string param2)同班。
      • at roeland : 它会给你两种不同的方法,不同类型的不同方法尝试这样做
      • 创建class2的对象,你就会知道那里没有发生重载
      • 我试过了。这是截图:snag.gy/a00jv.jpg -> 注意 + 1 重载
      猜你喜欢
      • 2015-12-14
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2021-03-03
      • 2014-06-08
      • 2019-09-13
      相关资源
      最近更新 更多