1、在没有静态块的情况下,子类的对象创建时,父类的无参构造器-->子类的构造器(产生对象的构造器,如果是无参则执行的是无参构造器,如果执行的是有参则执行的有参构造器)。现在的父类中只有两个构造器:
- Father.java
- Father {
- public Father(){
- System.out.println("我是父类的无参构造器");
- }
-
- public Father(String username){
- System.out.println("我是父类有参构造器,传过来的参数是+"+username);
- }
- public class SonDemo extends Father{
-
- public SonDemo(){
- System.out.println("我是--子类--的无参构造器");
- }
- public SonDemo(String username){
- System.out.println("我是子类的有参构造器,参数是"+username);
- }
-
- public void sys(){
- System.out.println("我是子类的sys方法");
- }
-
- public static void main(String[] args) {
-
- }
-
-
-
- }
|
① 子类使用无参构造器创建对象:
在SonDemo 的main方法中加入创建对象的代码:
- SonDemo son = new SonDemo();
-
- }
|
我是父类的无参构造器
我是--子类--的无参构造器
② 子类使用有参构造器创建对象:
SonDemo的main方法中加入
SonDemo son = new SonDemo("than you ma"); |
那么控制台打印的结果是:
我是父类的无参构造器
我是子类的有参构造器,参数是than you ma
也就是说在子类调用无参构造器创建对象的时候,在执行它自己的有参构造器之前首先执行父类的无参构造器。
③ 在子类中创建父类的对象,使用无参
- SonDemo son = new SonDemo("than you ma");
- Father ff = new Father();
|
SonDemo的main方法中加入
我是父类的无参构造器
我是--子类--的无参构造器
我是父类的无参构造器
调用了父类的无参构造器,有参的创建对象调用的是有参构造器。
总结:在创建子类对象的时候,首先会调用父类的构造器,让后在调用子类相应的构造器创建对象,在子类创建父类对象时,就是直接调用父类自己相应的构造器。