【问题标题】:parent class's constructer in a child class in C#C#子类中父类的构造函数
【发布时间】:2012-06-18 09:13:05
【问题描述】:

我有一个父类和一个子类。 父级有一个初始化其参数的构造函数。

我的问题是:孩子如何看待父母的构造函数?我可以为孩子定义一个构造函数吗?

【问题讨论】:

    标签: c# inheritance constructor parent


    【解决方案1】:

    您可以在 child 类的 ctor 中使用 base(...)

    前言:

    public class Child : BaseClass 
    {
        public Child() : base(/*some parameters*/) //CALLING BaseClass parametrized ctor
        {  
        }
    }
    

    请注意,如果你不需要一些特定的参数,就不要做任何事情,因为BaseClass默认ctor会被调用顺便说一句当您调用 Child 类的 ctor 时。

    【讨论】:

    • 如果我在子类中创建新的构造函数会怎样。参数将根据孩子或父母的构造函数进行初始化?
    • 如果你使用参数化的构造函数,可以自动调用的基类的唯一ctor是default构造函数.所以在参数化的情况下,从absectors中选择合适的。
    【解决方案2】:

    此继承示例显示:

    • 如何从子的新构造函数调用父构造函数
    • 如何传递父构造函数需要的参数

    代码示例:

    public class Parent
    {
        private object _member;
    
        public Parent(object member)
        {
            this._member = member;
        }
    }
    
    public class Child : Parent
    {
        public Child(object member)
            : base(member)
        {
        }
    }
    

    【讨论】:

    • 非常感谢。它真的是一个有用的答案。
    • @AliEssa 没问题。欢迎来到 StackOverflow。当您发现有帮助的答案时,您可以投票。如果这是您自己的问题,您可以通过“接受”答案将答案标记为最佳。
    • 我发现当我在父级中再创建一个构造函数时,我应该也创建一个具有相同参数的子构造函数。
    • @Ali Essa。正确的。构造函数中的参数应该被映射。但是,您可以在子项中提供默认值:public Child() : base(null)
    【解决方案3】:

    您必须为孩子定义构造函数。您可以在构造函数原型及其实现之间使用: base() 调用基类的构造函数:

    public class Parent {
      public Parent() {
        ...
      }
    }
    
    public class Child : Parent {
      public Child() : base() { // calls Parent.ctor
      }
    }
    

    【讨论】:

      【解决方案4】:

      当然。

      您在“base”关键字之后。

      public class Fruit
      {
          string TypeOfFruit { get; set; }
      
          public Fruit (string typeOfFruit)
          {
              TypeOfFruit = typeOfFruit;
          }
      
      }
      
      public class Apple : Fruit
      {
          string AppleType { get; set; }
      
          public Apple(string appleType) : base("Apple")
          {
              AppleType = appleType;
          }
      
      }
      

      【讨论】:

        【解决方案5】:

        你可以很好地为子类定义一个构造函数,只有在你没有为一个类定义构造函数的情况下才会提供默认的构造函数

        同时说明如何查找parent的构造函数

        它会检查父类中是否存在无参数构造函数,以防万一你没有(编译器会让你知道相同的),否则你将不得不使用像@这样的参数调用父构造函数987654321@

        如果您还有其他意思,请更新问题。

        【讨论】:

          猜你喜欢
          • 2018-02-28
          • 1970-01-01
          • 2014-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多