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

    运行结果:

  • 相关阅读:
    CentOS6.8安装Oracle11g单实例
    Ubuntu16.04使用apt安装完nginx常见问题
    简单配置 docker swarm
    子域名查询
    小米监控--Open-Falcon
    Mongodb学习笔记一(Mongodb环境配置)
    ElasticSearch第一步-环境配置
    调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
    sql语句 in的教训
    NVelocity学习笔记一——linq2sql+NVelocity完整demo
  • 原文地址:https://www.cnblogs.com/shuiguang/p/2619455.html
Copyright © 2011-2022 走看看