当前位置:  编程技术>.net/c#/asp.net

C#学习笔记之派生类的构造函数

    来源: 互联网  发布时间:2014-08-30

    本文导语:  1,在使用构造函数时,作为派生类会有某些特殊问题。其根源就是创建派生类时会有多个构造函数起作用。 2,C#中实例化的类的构造函数本身不能初始化类,还必须调用基类的构造函数。 3,构造函数的调用顺序是自上向下的...

1,在使用构造函数时,作为派生类会有某些特殊问题。其根源就是创建派生类时会有多个构造函数起作用。

2,C#中实例化的类的构造函数本身不能初始化类,还必须调用基类的构造函数。

3,构造函数的调用顺序是自上向下的,(实际上是编译器先自下而上的寻找构造函数,然后再自上而下的执行)
直到达到要实例化的类为止,在此过程中,每一个构造函数都初始化它们自己的类中的字段。

来看个简单的例子吧。
 

代码示例:
class baseClass 

   public baseClass() 
   { 
      Console.WriteLine("baseClass"); 
        } 
    } 
     
    class childClass : baseClass 
    { 
        public childClass() 
        { 
            Console.WriteLine("childClass"); 
        } 
    } 
     
    class Program 
    { 
        static void Main(string[] args) 
        { 
            childClass child = new childClass(); 
     
            /*
             * 结果是
             * baseClass
             * childClass
            */ 
            Console.Read(); 
        } 
    } 

4,正是基于这样一种顺序(基类的构造函数最先被调用),
派生类的构造函数可以在执行的过程中掉用它可以访问的基类方法啊,属性和其他成员

5,另外我们还可以这样定义childClass的构造函数,结果一致。base不带参数  
 

代码示例:
public childClass() 
        : base() 
    { 
        Console.WriteLine("childClass"); 
    }    

实际上,编译器会自动调用基类中的不带参数的构造函数,而一旦为类定义了构造函数。
无论是否带有参数,那么类都不会再自动生成默认的构造函数。
所以,这时就要自己写这个默认的不带参数的构造函数,或通过给base传递参数来告诉编译器指定基类的构造函数。
例子:
 

代码示例:
class baseClass 

        private int a; 
        public baseClass(int i) 
        { 
            a = i; 
        } 
    } 
     
    class childClass : baseClass 
    { 
        public childClass(int i) 
            : base(i) 
        { 
     
        } 
    } 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            childClass child = new childClass(10); 
     
            Console.Read(); 
        } 
    } 

7, 不能把基类的构造函数定义为private
见下例,由于无法访问基类不带参的构造函数,编译时也会报错
 

代码示例:
class baseClass 

   private baseClass() 
   { 
       Console.WriteLine("baseClass"); 
   } 
}

就是这些了,C#学习笔记之C#派生类的构造函数,希望对大家有所帮助。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php构造函数和析构函数学习
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习java好 还是学习嵌入式开发好??
  • 学习linux网络编程需要学习些内核知识吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 从Delphi开始学习Java,如何学习Java.欢迎大家的光临!
  • 请问学习JAVABEANS是不是就是学习java.beans.*类库??
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 你们学习Linux是学习什么的?
  • 我想问一个大家,我现在刚学习LINUX,我想问一下在LINUX学习哪些知识有前途???
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3