首先说明下 之所以用 双引号 是因为构造函数是没有继承的

派生类默认会调用基类的无参数构造函数

比如: 

  public class A         {

public A()         {

Console.WriteLine("A");

}

public A(string name)         {

Console.WriteLine("A Name:{0}", name);

}

}

public class B : A     {

public B()         {

Console.WriteLine("B");

}

public B(string name)         {

Console.WriteLine("B Name:{0}", name);

}

}

class Program

{

  static void Main(string[] args)

  {

    B b = new B();
            B b1 = new B("张三");
            Console.ReadKey();

  }

}

输出的结果为:

说明不管调用派生类的哪个构造函数,默认都先调用基类的无参数构造函数

之所以标题中用 "继承" 是因为构造函数之间的调用也是用 ":",下面就在派生类里面调用一下基类的构造函数

class Program     {

   static void Main(string[] args)

   {

    B b = new B();

     Console.ReadKey();

  }

}

public class B : A     {

public B():base("B->A")         {

Console.WriteLine("B");

}

public B(string name)         {

Console.WriteLine("B Name:{0}", name);

}

}

输出结构为:

由结果可以看出,当给B的构造函数手动指派要调用的基类带参数的构造函数后,将不再执行基类的无参数构造函数

下面写下在同一个类中构造函数的调用

class Program     {

   static void Main(string[] args)

   {

    B b = new B();

     Console.ReadKey();

  }

}

public class B : A     {

public B():this("无惨->带参")         {

Console.WriteLine("B");

}

public B(string name):this(true)         {

Console.WriteLine("B Name:{0}", name);

}

  public B(bool b)         {

     Console.WriteLine("B bool:{0}", b);         }

  }

输出结果:

为了看一下调用的先后关系就又加了一个bool参数的构造函数,由结果可以看出如果构造函数调用了另一个构造函数,例如:

public B():this("无惨->带参")

执行顺序是从后向前依次执行的

C#构造函数的 "继承" 问题的更多相关文章

  1. javascript面向对象(三):非构造函数的继承

    本文来自阮一峰 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使用构造函数实现"继承" ...

  2. javascript面向对象(二):构造函数的继承

    本文来自阮一峰 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有 ...

  3. Javascript面向对象编程(三) --- 非构造函数的继承

    一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { nation:'中国' }; 还有一个对象,叫做&qu ...

  4. Java构造函数的继承问题

    ◎构造函数的继承 1.子类只继承父类的默认(缺省)构造函数,即无形参构造函数.如果父类没有默认构造函数,那子类不能从父类继承到任何构造函数. 3.在创建对象时,先调用父类默认构造函数对对象进行初始化, ...

  5. 转载:javascript面向对象编程:非构造函数的继承

    一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { nation:'中国' }; 还有一个对象,叫做&qu ...

  6. Javascript面向对象编程(三):非构造函数的继承 by 阮一峰

    今天是最后一个部分,介绍不使用构造函数实现"继承". 一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Ch ...

  7. (转)Javascript面向对象编程(三):非构造函数的继承(作者:阮一峰)

    不使用构造函数实现"继承". 一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { na ...

  8. JS继承,原型继承,构造函数的继承,非构造函数"的继承

    a.原型继承 一.new运算符的缺点 用构造函数生成实例对象,有一个缺点,那就是无法共享属性和方法.比如,在DOG对象的构造函数中,设置一个实例对象的共有属性species. function DOG ...

  9. JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习

    虽然经常说是做前端开发的,但常常使用的技术反而是JQuery比较多一点.在JavaScript的使用上相对而言少些.尤其是在创建对象使用原型链继承上面,在项目开发中很少用到.所以今天做个demo练习一 ...

  10. Javascript面向对象编程(二):构造函数的继承

    这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个" ...

随机推荐

  1. C#获取当前路径的几种方法

    C#获取当前路径的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2. ...

  2. Lesson 2: Dive Into Typography (排版)

    Lesson 2: Dive Into Typography (排版) 排版是字的艺术,是关于字的一切:字体.字号.行高.行长.字重(斜体/加粗/正常).字距(kerning).行距(leading) ...

  3. 第11章 集合、比较和转换(C#入门经典第6版)

    1.集合 数据有一定的限制,最不能忍受的是一旦创建,数组的大小就固定,不能再添加.而集合则包含了数组所具有的功能,且可以任意添加/删减元素项,还有一些其他 功能. 集合的功能主要通过接口来实现,接口包 ...

  4. 获取GET/POST提交的数据,并处理中文问题

    1.获取input标签中的值,用request.getParameter("User")(User为input的name值) 2. 获取checkbox的值,由于是多选的,所以不能 ...

  5. (原)ubuntu下使用ftp软件

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6121663.html 参考网址: http://tieba.baidu.com/p/387426074 ...

  6. Guava API学习之Ordering犀利的比较器 编辑

    Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比功能更强.它非常容易扩展,可以轻松构造复杂的comparator,然后用在 ...

  7. 分享QQ第三方登陆SDK

    主要是考虑到QQ的PHP SDK写的真是太烂了,纯属是普及API知识,而不是到手就可以部署的类库..反正自己都写了一个了,就拿出来分享下.. 什么也不多说,直接上代码. Qq_sdk.php < ...

  8. DataSet排序

    //排序            if (ds != null && ds.Tables.Count > 0)            {                DataVi ...

  9. css 动画 transform transition animation

    1.transform  transform 是通过在浏览器里面让网页元素 移动 旋转 透明 模糊 等方法来实现改变其外观的技术 -webkit-transform : translate(3em,0 ...

  10. java中把字节数组转换为16进制字符串

    把字符串数组转换为16进制字符串 import java.security.MessageDigest; public class StringUtil { public StringUtil() { ...