【JAVA】继承基础问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 09:47:50
class A {
A() {
System.out.println("A()");
}
}

class B extends A {
B() {
System.out.println("B()");
}

public static void main(String[] args) {
new B();
}
}

为什么输出为A()B()?
程序并没有调用A类的方法为什么会打印A()?

你上面两个函数都是构造函数
每个类在new对象时,都会根据参数的不同来产生对象,首先会执行构造函数
,又因为有继续关系,new 子类的对象时,父类的构造方法会第一步执行,所以首先打印A(),后打印B()

如果 new 父类的对象时,只会执行父类的构造函数

继承在程序中用得还是比较多的,这是基础,理解一下!

B继承自A,那么就拥有了A的所有东西,实际上在内存中:B对象里边包含了一个A对象,那么在创建B对象的时候必然要先创建A对象

调用派生类构造函数之前会先调用基类构造函数

new一个对象,就是在内存中生产一个对象,并执行该对象的构造方法,执行的第一句是执行父类的构造方法,同理父的第一句再去执行父父的构造,如此最基础的父类的构造会最先执行(没有extends的就隐式的直接继承object类)。所以先平 打印A,再打印B。