美文网首页
子类 super()传参的坑

子类 super()传参的坑

作者: Helloword_Cc | 来源:发表于2020-05-23 15:38 被阅读0次

父类

public class BaseServiceImpl<T> {

    public   BaseDaoI baseDaoI;

    public  BaseServiceImpl(BaseDaoI baseDaoI){
        this.baseDaoI =baseDaoI;
    }

子类去继承BaseServiceImpl 需要初始化baseDaoI
子类:

image.png

如图向父类传递baseDaoI对象,但一定需要添加静态修饰。
由于jvm类加载顺序
1)父类的变量,父类的构造函数。
2)子类的变量,子类的构造函数。

所以父类初始化baseDaoI的时候,子类还没有baseDaoI还没初始化,怎么能传递baseDaoI到父类呢。

而添加了static之后 ,子类的<静态>变量是先于父类的变量初始化的。所以传入父类的构造方法则没问题。

去掉static修饰,编译报错。

image.png

最后是加载顺序表

父类静态变量初始化
父类的静态初始化块
子类初始化静态变量
子类的静态初始化块
父类非静态变量初始化
父类的非静态初始化块
父类构造函数 start
父类调用draw方法 null
父类构造函数 end
子类初始化非静态变量
子类初始化私有变量
子类的非静态初始化块
子类构造函数 start
子类调用draw方法子类初始化私有变量
子类构造函数 end

相关文章

  • 子类 super()传参的坑

    父类 子类去继承BaseServiceImpl 需要初始化baseDaoI子类: 如图向父类传递baseDaoI对...

  • Java继承之构造器

    1.无参构造方法 父类 子类 运行结果 总结从父类到子类一级一级完成构建,子类不用手动调用super() 2.有参...

  • 子类父类初始化流程

    父类子类在初始化的是执行的流程①子类构造器会隐式调用父类的无参构造方法,如果子类显式利用super调用了父类的有参...

  • 4.5 子类的实例化过程

    子类的实例化过程注意:super语句一定定义于子类构造函数的第一行结论:子类的所有构造函数,默认都会访问父类中空参...

  • 《Java编程的逻辑》笔记 16 - 继承的细节

    构造方法 super(1)子类可以通过super(...)调用父类的构造方法(2)果子类没有通过super(......

  • lombok相关

    8.7.30@Builder无法设置父类属性,解决方法:@Builder放在子类的全参构造方法上。里面给super...

  • JAVA_super() 与 this() 必须放在构造函数第一

    super() 调用父类的无参构造函数,当在子类构造函数中调用时必须放在第一行,原因如下:1.编译器检测子类构造函...

  • 第十一章继承

    使用继承 父类 子类 子类访问父类成员 super 使用super 关键字,super代表父类对象 访问父类的构...

  • super关键字

    什么是super? super代表的是当前子类对象中的父类型特征。 什么时候使用super? 子类和父类中都有某个...

  • day3

    1.盒子类型的传参 margin和padding的传参方式一样 元素内容的起始位置,是基于它自身width,hei...

网友评论

      本文标题:子类 super()传参的坑

      本文链接:https://www.haomeiwen.com/subject/lwxlahtx.html