美文网首页
C#继承与构造函数的调用

C#继承与构造函数的调用

作者: func_老衲姓罗 | 来源:发表于2017-08-19 15:18 被阅读0次

1、实例化父类时,可以使用new子类,执行构造函数顺序为:先执行父类构造函数,再执行子类构造函数。

2、实例化子类时,只可以new子类,执行顺序同上。

3、父类实例化后,只能执行父类的方法,获得父类的属性等。

4、实例化子类后,可同时执行子类和父类的方法和属性,如同名方法,则执行子类的方法。

我们看以下的代码:

public class A
{
    public A(string a) { }
}
public class B:A
{
    public B() { }
}

这段代码编译后,会有个错误提示:A does not contain a constructor that takes '0' arguments ,中文意思类A没有包含无参构造函数。按照提示,添加了无参构造函数,问题解决了。

那么为什么会这样呢,我们知道,子类在创建对象执行构造函数之前会先执行父类的构造函数,那么假如父类中有多个构造函数,又是执行哪个呢,这时候base这个关键字我想可以来说明一切。还是看代码吧:

public class A
{
    public A() { }
    public A(string a) { }
}
public class B:A
{
    public B():base()
    { }
}

在A中添加了无参构造函数,然后在B中修改了这句:pubic B():base(){},然后我们测试下,创建一个B对象,在A类中的2个构造函数中设置断点,发现无参构造函数执行了,我想正是因为这个base在这里发挥了作用,是base()指向了父类的无参构造函数。其实,在类B中,我们完全可以省略 base(),也能正常运行,

第一段代码中提示的错误的原因是A类中没有无参的构造函数,这样在执行B中的构造函数的时候,就没法执行A中的无参构造函数了。 下面我在写一段不使用无参构造函数的代码,看了会更加清晰:

public class A
{
    public A(string a)
    {
        //
    }
}
public class B:A
{
    public B(string a):base(a)
    {
        //
    }
}B中的构造函数指定了调用父类的A(string a)构造函数。这样我们创建B对象在执行构造函数前就会执行父类中对应的指定的构造函数了。

相关文章

  • 继承中执行顺序讨论

    继承中,子父类的构造函数(构造函数不被继承)1.子类必须调用父类的构造函数(构造函数不被继承)(1)如果没有写调用...

  • C#继承与构造函数的调用

    1、实例化父类时,可以使用new子类,执行构造函数顺序为:先执行父类构造函数,再执行子类构造函数。 2、实例化子类...

  • java子类调用父类构造器函数

    子类 调用 父类的构造函数:(构造函数不会被继承,只是被子类调用而已) 1、子类所有的 构造函数 默认调用父类的无...

  • javascript继承之构造函数继承(二)

    构造函数继承也就是也用构造函数,也可以说是伪造对象或经典继承思想很简单:在子类型构造函数的内部调用超类型构造函数 ...

  • ES5的继承 --- 构造函数的继承

    ES5的继承 构造函数的继承 基本思想:在子类型构造函数的内部调用超类型构造函数,通过使用apply()和call...

  • swift中累的构造函数

    类的构造函数 使用KVC调用构造函数 需要注意事项1.必须继承自NSObject2.必须在构造函数中,先调用sup...

  • java中继承,子类是否继承父类的构造函数

    java中继承,子类是否继承父类的构造函数 java继承中子类是不会继承父类的构造函数的,只是必须调用(隐式或者显...

  • 面向对象继承的方式

    创建父类 原型链继承:将父类的实例作为子类的原型 借用构造函数继承:在子类型构造函数的内部调用父类的构造函数 组合...

  • 2002.C++BASE-构造函数、析构函数

    转:C++继承中构造函数、析构函数调用顺序及虚析构函数 1.构造函数 大家都知道构造函数里就可以调用成员变量,而继...

  • JS的继承(原型继承与Class继承)

    一、原型继承 上面代码中,在子构造函数中调用父构造函数,并使用 call 函数传入 this,这样子构造函数就会继...

网友评论

      本文标题:C#继承与构造函数的调用

      本文链接:https://www.haomeiwen.com/subject/hgptdxtx.html