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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© boom_pm2.5 中级黑马   /  2016-11-12 22:27  /  820 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题,这道题的大致方向能看懂.就是下面有点问题;
class Parent {
    Parent() {
        System.out.println("parent");
    }
}
public class Child extendsParent {
Child(String s) {
   super();
        System.out.println(s);
    }
    public static void main(String[] args) {
        Child child = newChild("child");  //先调用父类的无参构造函数,再调自己的有参构造.
    }
}


main函数进入主方法.然后 通过Child child = new Child("child");
创建Child类类型的 对象, 然后赋值给child,  难道子类自己调用自己的有参构造方法,然后就去访问了 父类的构造方法吗?

爱生活,爱JAVA


4 个回复

倒序浏览
子类在初始化之前必须先初始化父类,所以构造方法都会默认调用父类空参构造。因为子类可能要用父类的属性,所以必须知道父类对这些属性有没有进行“操作”
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
构造方法的功能就是初始化,而方子类初始化时,必须先对自己父类进行初始化,然后再对自己进行初始化。先父后子
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
其实你可以这样理解,在执行 Child child = newChild("child"); 时候,会调用子类的有参构造方法,但是有参构造中第一句会默认带有super(),调用父类的无参构造,而且super()必须是第一行
回复 使用道具 举报
隐式三步
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马