美文网首页我与咖啡娘的爱恨情仇
06.继承中的构造方法执行顺序

06.继承中的构造方法执行顺序

作者: 今天庹 | 来源:发表于2018-09-19 21:29 被阅读0次

    继承中构造方法的执行顺序

    • A:super(实参列表);语句 在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
    • B:this(实参列表); 语句 在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
    package com.itheima;
    /*
     * 继承中构造方法的执行顺序
     *          在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法,
     *          如果子类构造方法的第一行没有调用父类的构造方法,则会默认调用父类的无参构造(※注意:第一行不算注释)
     *          肯定会先执行父类的构造,因为要先给父类的成员变量进行初始化,子类可能会使用到
     * 为什么要调用父类构造?
     *          因为需要给父类的成员变量初始化
     * 
     * 我们可以使用super()在构造方法的第一行调用父类的构造方法
     * 
     * 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造
     */
    public class ExtendsDemo6 {
        public static void main(String[] args) {
    //      Die d = new Die();
            Zi z = new Zi();
        }
    }
    
    class Die {
        public Die() {
            System.out.println("我是父类无参构造");
        }
        
        public Die(int num) {
            System.out.println("我是父类有参构造");
        }
    }
    
    class Zi extends Die {
        public Zi() {
    //      super(1);
            this(2);//不会再调用父类的无参构造了
            System.out.println("我是子类无参构造");
        }
        
        public Zi(int num) {
    //      super();    //会默认调用父类无参构造
            System.out.println("我是子类有参构造");
        }
    }
    

    相关文章

      网友评论

        本文标题:06.继承中的构造方法执行顺序

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