码迷,mamicode.com
首页 > 其他好文 > 详细

一点一点学架构(二)——继承中的构造函数调用

时间:2015-07-28 18:46:11      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:继承中的构造函数

前言

  在Java基础中我们学“继承中的构造方法”时,强调了以下几点:


  • 子类构造过程必须调用其基类的构造过程。
  • 可以通过显示调用或系统默认的方式调用基类的构造过程。
  • 显示调用:通过Super(参数)来调用,且必须放在子类构造方法的第一行。
  • 系统默认调用:调用基类的无参构造函数。

  回顾.NET,道理也是一样的。
  本文,首先以一个Demo给大家解释一下该知识点,然后再结合项目说一下该知识点的具体应用。

示例

    public class GrandFather
    {
        public GrandFather()
        {
            Console.WriteLine("GrandFather:默认构造函数");
        }
        public GrandFather(int a, int b)
        {
            Console.WriteLine("GrandFather带参构造:a={0}, b={1}.", a, b);
        }
    }

    public class Father : GrandFather
    {
        public Father()
        {
            Console.WriteLine("Father:默认构造函数");
        }
        public Father(int a, int b)
        {
            Console.WriteLine("Father带参构造:a={0}, b={1}.", a, b);
        }
    }

    public class Child : Father
    {
        public Child()
        {
            Console.WriteLine("Child:默认构造函数");
        }
        public Child(int a, int b)
        {
            Console.WriteLine("Child带参构造:a={0}, b={1}.", a, b);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Child mychild = new Child(1,2);
        }
    }

  程序在实例化Child这个子类时,会先调用最上层父类的构造函数,再调用父类的构造函数,然后再调用自己的构造函数,执行结果如下图所示:

   技术分享

项目中应用

BLL层
        技术分享

  当我们实例化B层的一个具体业务类时如:

  new UserInfoBLL()时,程序执行过程:

  技术分享

  这时,首先调用最上层父类的构造方法CoreBaseService(),在这个构造方法里调用了另外两个方法:SetDbSession(),SetCurrentDal()。

        /// <summary>
        /// 构造函数初始化
        /// </summary>
        public CoreBaseService()
        {
            SetDbSession();
            SetCurrentDal();
        }

        //子类必须实现此方法来确定具体的DbSession对象
        public abstract void SetDbSession();

        //子类必须实现此方法,设置当前具体的Dal
        public abstract void SetCurrentDal();

  这两个方法在CoreBaseService中没有实现,所以会去它的子类中寻找实现。所以紧接着在BaseService中找到了SetDbSession的实现,然后在UserInfoBLL中找到了SetCurrentDal的实现。

  然后,调用父类BaseService的构造函数。

  最后,调用自身构造函数UserInfoBLL(),获得实例。

DAL层

        技术分享
        
  在CoreBaseDal的构造方法中调用了SetDbContext这个抽象方法。

总结

  通过继承中的构造函数这一知识点,明白了项目架构图中在纵向角度各个类之间的关系。

版权声明:本文为博主原创文章,未经博主允许不得转载。

一点一点学架构(二)——继承中的构造函数调用

标签:继承中的构造函数

原文地址:http://blog.csdn.net/u010924834/article/details/47107075

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!