继承中执行顺序讨论

继承中,子父类的构造函数(构造函数不被继承)
1.子类必须调用父类的构造函数(构造函数不被继承)
(1)如果没有写调用,那子类的构造函数默认会调用父类无参数的构造函数(改句默认在子类构造函数的第一句)super();
(2)如果要显示的调用那么要用super(参数列表),而且该句必须在子类构造函数中的第一句需要给父类的构造函数传递参数
2.有子类、父类初始化的顺序
(1)先父类静态,然后子类静态,与创建对象无关,只要用到类就会先加载其静态属性并且只加载一次。
(2)父类的定义初始化、父类的构造函数。
(3)子类的定义初始化、子类的构造函数。
package lesson02;

public class Demo2
{

public static void main(String[] args)
{
    B b = new B();// 控制台如何输出
}

}

class A
{
static
{
System.out.println("aa...");// 静态定义初始化块
}
{
System.out.println("bb...");// 定义初始化块
}

A()
{
    System.out.println("cc...");// 构造函数
}

}

class B extends A
{
static
{
System.out.println("dd...");// 静态定义初始化块
}
{
System.out.println("ee...");// 定义初始化块
}

B()
{
    System.out.println("ff...");// 构造函数
}

}

输入结果如下:
aa...
dd...
bb...
cc...
ee...
ff...

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容