Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#不从基类继承构造函数_C#_.net_Inheritance_Constructor - Fatal编程技术网

C#不从基类继承构造函数

C#不从基类继承构造函数,c#,.net,inheritance,constructor,C#,.net,Inheritance,Constructor,可能的重复项: 当定义从基类继承的类时,我必须重新定义它的所有构造函数。 我想知道为什么C#不支持从基类的构造函数继承?构造函数不被继承,因为我们无法正确确定派生类对象是如何实例化的。当所有派生类都隐式使用父类的构造函数时,在我的建议中,这将是一个问题,因为如果我们忘记重新定义构造函数,对象可能已被错误初始化。如果希望派生类构造函数执行与父类构造函数相同的操作,请使用调用它 还要注意,如果不显式调用任何其他带参数的基类构造函数,基类构造函数(无参数)将自动运行。因此调用base()是多余的只

可能的重复项:

当定义从基类继承的类时,我必须重新定义它的所有构造函数。
我想知道为什么C#不支持从基类的构造函数继承?

构造函数不被继承,因为我们无法正确确定派生类对象是如何实例化的。当所有派生类都隐式使用父类的构造函数时,在我的建议中,这将是一个问题,因为如果我们忘记重新定义构造函数,对象可能已被错误初始化。如果希望派生类构造函数执行与父类构造函数相同的操作,请使用调用它


还要注意,如果不显式调用任何其他带参数的基类构造函数,基类构造函数(无参数)将自动运行。因此调用
base()是多余的

只有成员变量和成员方法可以从一个类继承到派生类。

派生类的构造函数隐式调用基类或Java术语中的超类的构造函数。在继承中,按照类在类层次结构中出现的顺序,在派生类的构造函数之前调用所有基类构造函数

现在,如果基类有多个构造函数,那么派生类必须定义应该调用哪个构造函数。例如:

public class CoOrds
{
    private int x, y;

    public CoOrds()
    {
        x = 0;
        y = 0;
    }

    public CoOrds(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

//inherits CoOrds:
public class ColorCoOrds : CoOrds
{
    public System.Drawing.Color color;

    public ColorCoOrds() : base ()
    {
        color = System.Drawing.Color.Red;
    }

    public ColorCoOrds(int x, int y) : base (x, y)
    {
        color = System.Drawing.Color.Red;
    }
}

有关更多信息,请访问:

不要认为它是用任何其他语言(如Java)完成的。只有默认的ctor(如果有的话)是从子类调用的,因为它是一个不同的对象。(函数相同)@KarlKnechtel,因为如果子类中没有显式定义构造函数,则允许复制基类中的构造函数是有意义的。基类可能有可以使用构造函数设置的变量,例如(X,Y,Color),这些变量在派生类中不会改变,即构造函数仍然有效。@KarlKnechtel出于同样的原因继承了所有其他公共方法?这是对原始问题的真正答案。尽管我是一个老帖子,但我毫不怀疑会对你的答案投赞成票。你是唯一正确的人。这正是我要找的,它的工作原理和你描述的一样。谢谢