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

本文探讨Java中继承中的构造函数调用规则,包括子类必须调用基类构造函数,显示调用与默认调用的区别。通过示例解释了在实际项目中的应用,例如在BLL层和DAL层如何利用构造函数进行初始化操作,强调了构造函数在构建类层次关系时的作用。

前言

  在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这个抽象方法。

总结

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

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值