子类可以继承构造函数吗?

Cha*_*adD 2 .net vb.net oop

  1. 我有一个基类,"B",它有两个构造函数,一个没有参数,另一个接受一个参数,一个整数
  2. 我有一个子类"S",它继承自"B"并且没有定义任何构造函数.
  3. 我创建了一个S实例,试图将一个整数传递给构造函数.

我收到错误:

Error 1 Too many arguments to 'Public Sub New()"

这让我感到惊讶,因为我认为如果在子类S中没有定义构造函数,那么基类构造函数方法,特别是具有单个整数参数的构造函数将被调用而没有错误.

你知道我为什么会收到这个错误吗?构造函数是一个特例吗?

And*_*ite 6

类的构造函数仅适用于它定义的类,即使在继承关系中也是如此.为了能够利用你的基类1-arg构造函数,你必须做这样的事情(在C#中):

public class S : B
{
    public S()
    {
        // do something for S
    }

    public S(int myInt) : base(myInt)
    {
        // do something for S
    }
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ica 6

正如您所怀疑的那样,构造函数不是继承的.子类需要实现自己的构造函数.原因是基类的构造函数不知道如何初始化子类的成员,因此调用它们会使子类对象处于错误状态.