java中执行子类的构造方法时,会不会先执行父类的构造方法?

如题所述

会,


在创建子类的对象时,jvm会首先执行父类的构造方法,然后再执行子类的构造方法,如果是多级继承,会先执行最顶级父类的构造方法,然后依次执行各级个子类的构造方法。

static class Parent {

public Parent() {

System.out.println("i'm parent");

}

}


static class Child extends Parent {

public Child() {

System.out.println("i'm child");
}


}


public static void main(String[] args) {


new Child();

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-02-13
你看一下下边的执行结果吧。
答案是会的。

public class Test {
public static void main(String[] args) {
new B();
new C();
}
}
class A {
public A() {
System.out.println("A");
}
}
class B extends A {
public B() {
System.out.println("B");
}
}
class C extends A {
public C() {
super();
System.out.println("B");
}
}

有关Java类的构造函数的问题。如果父类是Father子类是Child,
构造方法不能继承,也不能覆盖,子类构造方法需要重新定义。

关于java的问题,为什么“Super必须是子类的第一条语句”?
java类构造方式的执行顺是先构造父类,然后构造子类。要初始化子类必须先初始其父类。父类构造器调用就是用Super()来实现的,所以必须是Super。当然你可以不写,但是编译器默认会先执行Super。

new一个子类的时候,父类对象有没有生成
有父类对象的生成,要不你怎么可以继承父类中的成员变量呢!在内存中生成一个子类SubClass的对象区域,在此区域当中还包含着一个父类(Base)对象. (如下图)

java中父类没有构造方法,只有一个不带参数的抽象方法,子类可以要怎么写...
可以不写 但如果子类需要带参数的构造方法,就必须写一个无参的,然后super();

java父类的构造方法为什么不能被子类继承
因此,子类的构造器除了承担着初始化子类的新增变量和方法,还要初始化父类自身新增加的变量和方法。一般来说,如果在子类的构造器中没有使用super()调用父类相应的构造器,子类的构造器会自动调用父类默认的,也就是不带参数的构造器来初始化父类的东西。而Java类的默认构造器,当你没有为你写的类...

子类为什么不能继承父类的构造方法
是的阿,不过你可以在子类的构造方法里面使用父类的构造方法:super(...);

为什么Java反射对象必须有一个无参数的构造方法?
如果父类中没有此构造方法,那么必须在子类中进行无参构造,否则子类会一直提示需要重写父类方法。 备注:这个建议根据java规范,每次创建类(需要构建)的时候就构建一个无参的构造方法,肯定不会报错。怎样编写一个无参数的构造方法 使用类名作为方法名,参数列表为空就可以了。 例:有一个类A(...

java的方法重写后何时调用父类的方法呢
你好,父类对象.方法名()调用的是父类原方法。调用重写后的方法需要用子类对象调用。如果要在子类中调用父类被重写的方法用super.方法名()。如果满意,请采纳,谢谢。

JAVA的父类中是不是一定要有无参数的构造方法?为什么我不在父类中写空...
但是如果我们创建一个构造方法时,JVM就不会再为我们生成一个默认的构造方法。有时有必要的显示的写出这个默认构造函数,也就是无参构造函数。所以当这个类被继承时,子类就会默认的调用这个无参构造方法。如果你想显示的调用父类的构造方法,可以使用super()在子类的构造方法中的第一句。(构造方法中...

java子类实例化时是否同时存在一个父类对象?
不会产生父类对象,只是用了父类的构造函数而已,并不是用到构造函数就会产生对象,构造函数只是起对象初始化作用的,而不是起产生对象作用的,如果new A();即只有new语句才会产生父类A的对象。(1)变量是静态绑定 ,方法是动态绑定。 这里面变量在编译期间实现了变量调用语句与变量定义赋值语句的...

相似回答