提示:温故知新,谨防斗气化马 o(╯□╰)o
前言
贫瘠的认知,艰难中向阳
在编写自定义事件的时候,需要继承ApplicationEvent
抽象类,发现必须显示编写有参构造方法,并且super(xx)
,调用父类的有参构造方法,自认为白银(其实塑料)的我一下子没反应过来具体缘由⊙▂⊙,度老师后,觉得还是自己认知的问题,不是遗忘,而是开始就没理解java的语言规范,这里做一下记录并串联。
一、什么是构造方法
1.释义
构造方法-Constructor,是一种特殊的方法,它是一个与类同名的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载,显示声明了有参构造方法,那么
jvm
虚拟机就不会默认添加无参构造方法,如果有需要,只能自己手动编写无参构造方法。
2.作用
构造方法,主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的;
构造方法,可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性;
有继承关系存在时,创建子类对象,jvm
就必须先创建父类对象:
- 如果父类没有无参构造方法(只有有显示的有参构造方法),子类也必须显示定义构造方法(因为默认的无参构造方法是调用父类的无参构造,但是此父类没有无参构造),子类的构造方法可以是无参也可以是有参的(一般是有参的,因为super要传递参数,除非写死),并且该构造方法中第一行必须是super(参数),调用制定的父类构造方法,so,这样才能确定通过父类哪个构造方法实例化父类;
- 如果父类有无参构造方法(默认/手动编写),则如果子类没有特殊需要,可以不显示声明构造方法,
jvm
会默认子类的无参构造并且调用super(),如果子类声明了无参/有参构造方法,编写的时候如果未指定父类的构造方法,那么jvm
虚拟机会默认执行父类的无参构造super()方法去创建父类对象。
二、类都有构造方法?
java中所有的类都有构造方法,接口不属于类,所以接口没有构造方法,不可以实例化。
总结
行动起来,动手去写,遇到问题就研究,心态放好,全力以赴,最后借用《二十二史札记》与君共勉:故凡可以得名者,必全力以赴,好为苟难,遂成风俗。