最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#構造函數(shù)在基類和父類中的執(zhí)行順序

 更新時間:2022年04月18日 13:56:36   作者:農碼一生  
這篇文章介紹了C#構造函數(shù)在基類和父類中的執(zhí)行順序,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、簡介

當我們沒有在子類構造函數(shù)中寫上 base(),默認會先調用父類中無參的構造函數(shù),再調用子類。
當在有參構造函數(shù)后寫上base時,只調用子類構造函數(shù)中有參的構造函數(shù),隱藏父類無參構造函數(shù)。

二、代碼案例

父類代碼:

#region 父類

    /// <summary>
    /// 測試構造函數(shù)——需要被構造類 Fu
    /// </summary>
    class Fu
    {
        private int x;//一個簡單的私有字段
        /// <summary>
        /// 構造函數(shù)
        /// </summary>
        public Fu()
        {
            Console.WriteLine("會先調用這里:這是父類");
        }

        /// <summary>
        /// 父類中的有參構造方法
        /// </summary>
        /// <param name="x"></param>
        public Fu(int x)
        {
            this.x = x;
            Console.WriteLine("x賦值完成");
        }

        /// <summary>
        /// 父類構造C函數(shù)
        /// </summary>
        /// <param name="x"></param>
        /// <param name="b"></param>
        /// <param name="c"></param>
        public Fu(int x, int b, string c)
        {
            this.x = x;
            Console.WriteLine("x賦值完成" + x + b + c);
        }


        /// <summary>
        /// 具有7個參數(shù)的構造函數(shù)
        /// </summary>
        /// <param name="a"></param>
        /// <param name="a1"></param>
        /// <param name="a2"></param>
        /// <param name="a3"></param>
        /// <param name="a4"></param>
        /// <param name="a6"></param>
        /// <param name="a5"></param>
        public Fu(int a, int a1, int a2, int a3, int a4, int a6, int a5)
        {
            Console.WriteLine("最長參數(shù)構造運行");
            Console.WriteLine(a + "|" + a1 + "|" + a2 + "|" + a3 + "|" + a4 + "|" + a5 + "|" + a6 + "|"); //在函數(shù)中讓傳入參數(shù)對Fu類對象進行初始化
            //例如有如下多個私有字段,在類對象初始化的時候,對其變量初始化。用構造函數(shù)最為簡單
            this.a = a; //傳入參數(shù),在對象實例化后,對其私有變量進行賦值操作
            this.a1 = a;
            this.a2 = a;
            this.a3 = a;
            this.a4 = a;
            this.a5 = a;
            this.a6 = a;
        }


        private int a;
        private int a1;
        private int a2;
        private int a3;
        private int a4;
        private int a5;
        private int a6;
    }
    #endregion

子類代碼:

#region 子類

    /// <summary>
    /// 派生類繼承父類
    /// </summary>
    class Derived : Fu
    {
        /// <summary>
        /// 會先調用父類的構造函數(shù),然后再調用子類這邊的有參構造函數(shù)
        /// </summary>

        //先調用父類無參,再調用子類無參
        //當我們沒有在子類構造函數(shù)中寫上 base(),默認會先調用父類中無參的構造函數(shù),再調用子類。

        public Derived() //: base() //重新構造 :調用父類中無參的構造函數(shù),在這里寫不寫調用結果一致
        {
            Console.WriteLine("這是派生類-無參-構造函數(shù)");
        }


        private int y;


        /// <summary>
        /// 構造函數(shù)
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// 當我們沒有在子類構造函數(shù)中 寫上 base(),默認會先調用父類中無參的構造函數(shù)
        /// 當在有參構造函數(shù)后寫上base時,只調用子類構造函數(shù)中有參的構造函數(shù),隱藏父類無參構造函數(shù)
        public Derived(int x, int y) /*: base(x)*/
        {
            this.y = y;
            Console.WriteLine("這是y賦值完成");
        }


        /// <summary>
        /// 多參數(shù)
        /// </summary>
        /// <param name="x"></param>
        /// <param name="a"></param>
        public Derived(int x, string a)// : base(x, x, x, x, x, x, x) //這里寫了 base 會先調用父類,再調用當前子類進行構造
        {
            y = x;
            Console.WriteLine(a + "第三方法");
        }
    }

    #endregion

Main()調用:

#region Main 入口
    /// <summary>
    /// 程序
    /// </summary>
    class Program
    {
        /// <summary>
        /// 主入口
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Derived d = new Derived();
            Console.WriteLine("-----------------------以上為無參構造------------------------------------------");
            Derived d1 = new Derived(1, 2);
            Console.WriteLine("-----------------------以上為2個參數(shù)構造---------------------------------------");
            Derived d2 = new Derived(1, "1");
            Console.WriteLine("-----------------------以上為2個參數(shù)構造,6個私變量----------------------------");

            //先調用有參的構造函數(shù)一旦被調用,無參的構造函數(shù)都不會被調用了
            //先執(zhí)行父類的構造函數(shù),才執(zhí)行子類的
            Console.ReadLine();
        }
    }
    #endregion

三、輸出結果

會先調用這里:這是父類
這是派生類-無參-構造函數(shù)
-----------------------以上為無參構造------------------------------------------
會先調用這里:這是父類
這是y賦值完成
-----------------------以上為2個參數(shù)構造---------------------------------------
最長參數(shù)構造運行
1|1|1|1|1|1|1|
1第三方法
-----------------------以上為2個參數(shù)構造,6個私變量----------------------------

到此這篇關于C#構造函數(shù)在基類和父類中執(zhí)行順序的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

鄂伦春自治旗| 蒙山县| 长乐市| 柳江县| 施甸县| 景谷| 宣威市| 泽库县| 鹿泉市| 清苑县| 清原| 崇文区| 容城县| 扶风县| 饶平县| 武穴市| 若羌县| 岗巴县| 衡南县| 平潭县| 兴仁县| 如东县| 铜梁县| 黄山市| 澄城县| 分宜县| 甘谷县| 周宁县| 泸定县| 峨边| 石林| 乐清市| 峨山| 德惠市| 中方县| 高碑店市| 威宁| 巴彦县| 怀化市| 藁城市| 翁牛特旗|