• 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);
            }
        }
    }

    运行结果:

  • 相关阅读:
    如何使用 ADO 将数据从 ADO 数据源传输到 Excel
    C#2.0中的可空类型Nullable
    2007年你必须学习的10项.NET技术
    日期正则表达式
    只允许n个实例进行
    MFC程序隐藏任务栏图标的三种方法
    Qt4小技巧——将button布局在QToolbar的右边
    QT学习随笔20120813
    只允许一个实例,允许n个实例
    折腾的DVCS
  • 原文地址:https://www.cnblogs.com/shuiguang/p/2619455.html
Copyright © 2020-2023  润新知