zoukankan      html  css  js  c++  java
  • C# 构造函数里的base和this的区别

    this只是调用本身,但是需要调用一次基类无参的构造函数.
    base是调用基类的有参数构造函数。

    class BaseClass
        {
            private int numA;
            public BaseClass()
            {
                Console.WriteLine("基类的无参数构造函数. value:{0}", numA);
            }
            public BaseClass(int i)
            {
                this.numA = i;
                Console.WriteLine("基类带一个参数的构造函数. value:{0}", numA);
            }
        }
        class ChildClassA : BaseClass
        {
            private int numB;
            public ChildClassA()
            {
                Console.WriteLine("子类无参数构造函数. value:{0}", numB);
            }
            public ChildClassA(int i)
            {
                this.numB = i;
                Console.WriteLine("子类带有一个参数的构造函数. value:{0}", numB);
            }
            public ChildClassA(int i, int j)
                : base(i)
            {
                this.numB = j;
                Console.WriteLine("子类带有两个参数的构造函数. value:{0}", numB);
            }
        }
        class ChildClassB : BaseClass
        {
            private int numB;
            public ChildClassB()
            {
                Console.WriteLine("子类无参数构造函数. value:{0}", numB);
            }
            public ChildClassB(int i)
            {
                this.numB = i;
                Console.WriteLine("子类带有一个参数的构造函数. value:{0}", numB);
            }
            public ChildClassB(int i, int j)
                : this(i)
            {
                this.numB = j;
                Console.WriteLine("子类带有两个参数的构造函数. value:{0}", numB);
            }
        }
        class Demo
        {
            static void Main(string[] args)
            {
                Console.WriteLine("使用base
    ");
                ChildClassA a = new ChildClassA(2, 4);
                Console.WriteLine();
                Console.WriteLine("----------------------------------------
    ");
                Console.WriteLine("使用this
    ");
                ChildClassB b = new ChildClassB(2, 4);
                Console.ReadKey();
            }
        }

    执行结果:

    --------------------------------结果----------------------------------
     
    使用base
     
    基类带一个参数的构造函数. value:2
    子类带有两个参数的构造函数. value:4
     
    ----------------------------------------
     
    使用this
     
    基类的无参数构造函数. value:0
    子类带有一个参数的构造函数. value:2
    子类带有两个参数的构造函数. value:4
     
    --------------------------------结果--------------------------------
    

      

  • 相关阅读:
    scala基础题--面向对象2
    scala基础题--面向对象1
    scala基础题--函数可以没有返回值案例,编写一个函数,从终端输入一个整数,打印出对应的金字塔
    scala基础题--100以内的数求和,求出当和第一次大于20的当前数【for】
    scala练习题--万年历
    Java中接口和Sala中的特质的区别?
    scala学习笔记
    Java反射
    【JDBC】C3P0连接池的使用
    【JDBC】工具类的抽取
  • 原文地址:https://www.cnblogs.com/seacher/p/8610757.html
Copyright © 2011-2022 走看看