合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
#### 介绍 在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super()语句。 父类 ~~~ public class Parent { public int x = 1; public Parent() { System.out.println("父类构造方法"); this.x = 10; } } ~~~ 子类 ~~~ public class Son extends Parent{ //在这里其实隐式的调用了父类的构造方法 } ~~~ 调用 ~~~ public class Main { public static void main(String[] args) { Son son = new Son(); System.out.print(son.x); } } ~~~ 结果 ~~~ 父类构造方法 10 ~~~ **注意** 1. 子类继承父类, 父类先进入内存. 然后类似打个标记,就是super . super不是父类对象, 而是父类所在的内存区域 . 2. 子类中所有构造方法, 无论重载多少个 . 第一行必须是super() . 3. 父类中要是有任意多个构造方法,子类中调用一个即可 . 4. 构造方法不能继承 , 也没有重写这一说法 . 5. this和super都在第一行, 那到底写哪一个呢 #### this和super不能同时存在 如果父类的构造方法需要传参, 子类构造器需要在方法之间调用该怎么办呢 ? 只要**保证子类所有构造器**能调用到父类构造器即可 . 子类构造器如果什么也不写, 那么默认第一行就是super() . 在父类中也是的有调用super() 的. 因为java中有一个顶级类object类 . 所有的类都是继承此类. 在object类中是没有调用super()的 .