(二十)看完这篇类的实例化顺序,考执行顺序的面试题就难不倒你了

简介: 一段代码的执行顺序经常会放到面试题或者笔试题中,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,它们的执行顺序,关于这一类题目只要了解了类的实例化顺序,就不会再成为问题。先看一下下面的面试题

微信搜索《Java鱼仔》,每天一个知识点不错过


每天一个知识点


看完这篇类的实例化顺序,考执行顺序的面试题就难不倒你了


(一)先看一道面试题


一段代码的执行顺序经常会放到面试题或者笔试题中,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,它们的执行顺序,关于这一类题目只要了解了类的实例化顺序,就不会再成为问题。先看一下下面的面试题:


publicclassFather {
privateinti=test();
privatestaticintj=method();
static {
System.out.print("1 ");
    }
Father(){
System.out.print("2 ");
    }
    {
System.out.print("3 ");
    }
publicinttest() {
System.out.print("4 ");
return1;
    }
publicstaticintmethod(){
System.out.print("5 ");
return1;
    }
}
publicclassSonextendsFather{
privateinti=test();
privatestaticintj=method();
static {
System.out.print("6 ");
    }
Son(){
System.out.print("7 ");
    }
    {
System.out.print("8 ");
    }
publicinttest() {
System.out.print("9 ");
return1;
    }
publicstaticintmethod(){
System.out.print("10 ");
return1;
    }
publicstaticvoidmain(String[] args) {
Sons1=newSon();
System.out.println();
Sons2=newSon();
    }
}

观察上面的代码,给出输出结果:


正确的结果为:


网络异常,图片无法展示
|


(二)解答


类初始化


1、一个子类要初始化需要先初始化父类;


2、执行静态类变量和静态代码块从上到下执行。


所以第一遍创建Son对象实例的时候会先执行父类静态类变量和静态代码块,再执行子类。所以是5 1 10 6


实例初始化


1、先调用Super;


2、调用非静态实例变量和非静态代码块从上到下执行


3、调用无参构造方法


4、调用Super时注意父类的对象是否被子类重写,如果重写就按照子类的重写来计算。

所以先调用父类的test方法,因为被子类重写,输出9,再调用非静态代码,输出3,调用无参构造,输出2,同理子类输出987。



相关文章
|
19天前
|
存储 安全 算法
Java基础19-一文搞懂Java集合类框架,以及常见面试题(二)
Java基础19-一文搞懂Java集合类框架,以及常见面试题(二)
42 8
|
19天前
|
安全 Java 开发工具
Java基础19-一文搞懂Java集合类框架,以及常见面试题(一)
Java基础19-一文搞懂Java集合类框架,以及常见面试题(一)
35 6
|
19天前
|
安全 Android开发 Kotlin
Android面试题之Kotlin的几种常见的类
这篇文章探讨了Kotlin编程语言中的初始化顺序、延迟初始化、惰性初始化、`lateinit`与`by lazy`的区别、初始化注意事项、继承、嵌套类、数据类、单例类和枚举类的使用,以及密封类的概念。文中通过示例代码详细解释了各种特性,并提醒读者关注初始化顺序和线程安全问题。同时,鼓励读者关注作者的公众号“AntDream”获取更多相关文章。
20 1
|
5天前
|
Java 数据库 索引
技术好文共享:用商城维护类项目,讲下应届生如何在面试中介绍项目,如何准备面试
技术好文共享:用商城维护类项目,讲下应届生如何在面试中介绍项目,如何准备面试
|
5天前
|
存储 安全 Java
《ArrayList & HashMap 源码类基础面试题》面试官们最喜欢问的ArrayList & HashMap源码类初级问,你都会了?
《ArrayList & HashMap 源码类基础面试题》面试官们最喜欢问的ArrayList & HashMap源码类初级问,你都会了?
9 0
|
12天前
|
存储 Java 编译器
【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
|
2月前
|
前端开发 算法 Java
当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!
【5月更文挑战第21天】当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!
25 1
|
2月前
|
运维 关系型数据库 MySQL
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
|
26天前
|
Java Apache Spring
面试官:如何自定义一个工厂类给线程池命名,我:现场手撕吗?
【6月更文挑战第3天】面试官:如何自定义一个工厂类给线程池命名,我:现场手撕吗?
14 0
|
2月前
|
Java
java面试基础 -- 普通类 & 抽象类 & 接口
java面试基础 -- 普通类 & 抽象类 & 接口
31 0