调用关系:
如果一个类具有父类,在类加载的时候都是先加载父类的方法(相当于构造了一个父类对象)
子类继承父类后,获取到父类的属性和方法,这些属性和方法在使用前必须先初始化,所以须先调用父类的构造器进行初始化。在子类构造器的第一行会隐式的调用 super();,即调用父类的构造器
如果父类中没有定义空参的构造器,则必须在子类的构造器的第一行显示的调用super(参数); ,以调用父类中构造器
如果子类中构造器的第一行写了this();,则就隐式的super();会消失,因为super()和this()都只能在构造器的第一行定义
结论: 通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。
二.思考:为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?
构造函数(constructor)是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。所以说构造函数的作用,简单来说就是初始化,初始化一个新建的对象。
1.有父才会有子,即便父类什么东西都没有,也必须调父类的构造方法,这样符合现实的生命传承关系,符合 Java 的面向对象和继承的思想
2.如果父类有一些变量,那么调用父类的构造方法,就可以通知 JVM 把父类加载进内存,从而对父类的变量进行初始化赋值
3.如果父类有一些方法,这些方法子类对象是有可能需要用到的,所以这些方法也必须提前放进子类对象中或者方法区中,那就必须把父类加载进内存中,因此调用父类的构造方法就可以通过JVM 加载父类到内存中
三.为什么要用多态?它有什么好处?
当你要修改程序并扩充系统时,你需要修改的地方较少,对其它部分代码的影响较小,千万不要小看这两个"较"字!程序规模越大,其优势就越突出。
标签:初始化,调用,构造方法,子类,整理,父类,心得,构造函数 From: https://www.cnblogs.com/pengsuoqun123/p/16998644.html