zoukankan      html  css  js  c++  java
  • C#中类的继承以及继承过程中构造函数的调用

    类的继承规则

    1、派生类自动包含基类的所有成员。但对于基类的私有成员,派生类虽然继承了,但是不能在派生类中访问。

    2、所有的类都是按照继承链从顶层基类开始向下顺序构造。最顶层的基类是System.Object类,所有的类都隐式派生于它。只要记住这条规则,就能理解派生类在实例化时对构造函数的调用过程。

    子类无论是默认构造(无参构造)和带参构造都默认将从顶层父类的默认构造一直调用到当前类之前的默认构造,再调用当前类的默认构造或者带参构造。

    可以在构造函数语句之前使用 :base(参数) 来指定当前类调用上层类的哪一个构造函数。

    示例:DerivedClass.cs文件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DerivedClass2
    {
        class BaseClass
        {
            public BaseClass()
            {
                Console.WriteLine("BaseClass 的默认构造器");
            }
            public BaseClass(string BparaString)
            {
                Console.WriteLine("BaseClass 的带一个参数的构造器,参数是:{0}", BparaString);
            }
            public BaseClass(string BparaString, int BparaInt)
            {
                Console .WriteLine ("BaseClass 的带两个参数的构造器,参数是:{0},{1}",BparaString,BparaInt);
            }
    
        }
        class DerivedClass:BaseClass 
        {
            public DerivedClass()
            {
                Console.WriteLine("DerivedClass 的默认构造器");
            }
            public  DerivedClass(string paraString)
                : base(paraString)
            {
                Console.WriteLine("DerivedClass 的带一个参数的构造器,参数是:{0}",paraString );
            }
            public DerivedClass(string paraString, int paraInt)
            {
    
                Console.WriteLine("DerivedClass 的带两个参数的构造器,参数是:{0},{1}", paraString, paraInt);
            }
        }
        class DerivedDerivedClass : DerivedClass
        {
            public DerivedDerivedClass()
            {
                Console.WriteLine("DerivedDerivedClass 的默认构造器");
            }
            public DerivedDerivedClass(string ddparaString)
                
            {
                Console.WriteLine("DerivedDerivedClass 的带一个参数的构造器,参数是:{0}", ddparaString);
            }
            public DerivedDerivedClass(string ddparaString, int ddparaInt)
                : base(ddparaString,ddparaInt )
            {
    
                Console.WriteLine("DerivedDerivedClass 的带两个参数的构造器,参数是:{0},{1}", ddparaString, ddparaInt);
            }
        }
    }

    Program.cs 文件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    
    namespace DerivedClass2
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
              static void Main()
            {
               
                DerivedClass DC1 = new DerivedClass("dc参数");
                Console.WriteLine("----------------");
                DerivedDerivedClass ddc = new DerivedDerivedClass("ddc参数",99);
            }
        }
    }

    运行结果:

  • 相关阅读:
    msysgit 上传文件夹,规范化的日常
    第三次作业【补完作业】
    c++我在努力----第三次作业体会
    编程题
    视频课程作业随笔
    HDU 4123 Bob’s Race 树形dp+单调队列
    HDU 4514 湫湫系列故事——设计风景线 树的直径
    POJ 1239 Increasing Sequences 动态规划
    BNUOJ 52318 Be Friends prim+Trie
    HDU 5925 Coconuts 离散化
  • 原文地址:https://www.cnblogs.com/shuiguang/p/2619455.html
Copyright © 2011-2022 走看看