构造器的执行顺序
作者:网络转载 发布时间:[ 2012/5/18 9:30:47 ] 推荐标签:
② 子类使用有参构造器创建对象:
SonDemo的main方法中加入
SonDemo son = new SonDemo("than you ma");
那么控制台打印的结果是:
我是父类的无参构造器
我是子类的有参构造器,参数是than you ma
也是说在子类调用无参构造器创建对象的时候,在执行它自己的有参构造器之前首先执行父类的无参构造器。
③ 在子类中创建父类的对象,使用无参
SonDemo son = new SonDemo("than you ma");
Father ff = new Father();
SonDemo的main方法中加入
我是父类的无参构造器
我是--子类--的无参构造器
我是父类的无参构造器
调用了父类的无参构造器,有参的创建对象调用的是有参构造器。
总结:在创建子类对象的时候,首先会调用父类的构造器,让后在调用子类相应的构造器创建对象,在子类创建父类对象时,是直接调用父类自己相应的构造器。
2、如果在子类和父类中存在静态块;执行顺序有会是怎么样的了?
答,静态块会在构造器之前运行。不管是子类还是父类。创建一个对象的时候,会首先加载它的静态块。
Father.java
public class Father {
//静态块
static{
System.out.println("father static ");
}
public Father(){
System.out.println("我是父类的无参构造器");
}
public Father(String username){
System.out.println("我是父类有参构造器,传过来的参数是+"+username);
}
}
SonDemo.java
public class SonDemo extends Father{
//静态块
static{
System.out.println("sonDemo static ");
}
public SonDemo(){
System.out.println("我是--子类--的无参构造器");
}
public SonDemo(String username){
System.out.println("我是子类的有参构造器,参数是"+username);
}
public void sys(){
System.out.println("我是子类的sys方法");
}
public static void main(String[] args) {
SonDemo son = new SonDemo();
}
}
① 程序的结果:
father static
sonDemo static
我是父类的无参构造器
我是--子类--的无参构造器
因为在创建子类对象之前:会创建父类的一个对象,而静态块会在main之前被加载,所以两个类的静态块首先执行。
然后执行构造器。
② 如果在子类中的main中只创建父类的对象结果是怎么样的呢?
打印结果:
father static
sonDemo static
我是父类的无参构造器
为什么子类的静态块会被加载了?是因为我们是在SonDemo中测试,如果在其他类中测试不会打印。
总结:我们说了这么多是重要的一点。静态块会在构造器器之前执行。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11