A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Demo6_Extends {
        public static void main(String[] args) {
                Son s1 = new Son();
                System.out.println(s1.getName() + "..." + s1.getAge());
        }
}

class Father {
        private String name;                       
        private int age;                               


        public Father(String name,int age) {       
                this.name = name;
                this.age = age;
                System.out.println("Father 有参构造");
        }

        public void setName(String name) {       
                this.name = name;
        }

        public String getName() {                       
                return name;
        }

        public void setAge(int age) {               
                this.age = age;
        }

        public int getAge() {                               
                return age;
        }
}

class Son extends Father {
        public Son() {                                               
                this("王五",25);                                                       
               
                System.out.println("Son 空参构造");
        }

        public Son(String name,int age) {       
                super(name,age);
                System.out.println("Son 有参构造");
        }
}



代码的运行结果是
Father 有参构造
Son 有参构造
Son 空参构造
王五...25

请大神向我明示,Son的有参构造是如何运行得来的.
它只对无参构造进行了访问,没有对有参构造进行访问,为什么还是输出了有参构造的语句???

1 个回复

倒序浏览
我明白了,这里面在创建对象后,先访问的子类的空参构造方法,然后利用 this("王五",25);    将值传递给son的有参构造方法,然后再将值传递给父类的有参构造,给成员变量赋值,然后输出语句father 有参构造.然后返回至子类有参构造输出son 有参构造,this语句执行完毕,然后运行son空参构造内的语句输出 son 空参构造.最后输入main方法语句  王五,25.哈哈哈哈哈哈哈~自己弄明白的感觉真是爽~~~~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马