首页 > 编程语言 >Java子类继承父类,静态代码块,代码块,构造方法执行顺序

Java子类继承父类,静态代码块,代码块,构造方法执行顺序

时间:2024-08-29 13:25:19浏览次数:16  
标签:执行 构造方法 静态 子类 代码 Son 父类

最近在做笔试时碰到这样一道题目

public class Test {
 
	public static void main(String[] args) {
		Son son = new Son();
	}
 
}
class Father{
	static {
		System.out.println("A");            
	}	
	{
		System.out.println("B");            
	}
	Father(){
		System.out.println("C");              
	}
}
class Son extends Father{
	static {
		System.out.println("a");            
	}	
	{
		System.out.println("b");            
	}
	Son(){
		System.out.println("c");              
	}
}

问初始化Son对象,打印出来的顺序应该是怎么样的,当时一下没想起来,现在记下来加深印象。

首先记住这些:

1.父静态代码块:父静态代码块是类加载时最先执行的部分,且只执行一次。
2.子静态代码块:子静态代码块紧接着父静态代码块执行,同样只执行一次。
3.父构造代码块:当调用子类的构造方法时,首先执行的是父类的构造代码块。
4.父构造方法:紧接着父类的构造代码块,执行父类的构造方法。
5.子构造代码块:父类构造方法执行完毕后,执行子类的构造代码块。
6.子构造方法:最后执行子类的构造方法。

所以打印出来的语句顺序是:

A
a
B
C
b
c

为什么是这样的顺序呢?
因为当虚拟机加载类时,会首先执行类中的静态代码块。静态代码块的执行顺序是按照它们在类中出现的顺序。
使用new关键字创建Son类的对象时,会触发以下顺序的执行:
将类加载进内存中时,Father类先于Son类,所以首先执行父类Father的静态代码块。
然后执行子类Son的静态代码块。
接下来,执行父类Father的构造代码块,然后是父类的构造方法。
最后,执行子类Son的构造代码块和构造方法

标签:执行,构造方法,静态,子类,代码,Son,父类
From: https://blog.csdn.net/tansenc/article/details/141676214

相关文章

  • 如何使用python实现批量ping,附代码
    以下为使用Python实现批量ping的多种方法及代码示例:方法一:importsubprocesswithopen('hosts.txt','r')asf:hosts=f.readlines()forhostinhosts:result=subprocess.check_output(('ping','-c','1',host.stri......
  • 黑马JavaWeb开发笔记09——ElementUI代码引入教程、Element常用组件使用(Table, Pagina
    文章目录前言ElementUI1.快速入门(代码引入教程)2.组件:Table表格3.组件:Pagination分页4.组件:Dialog对话框5.组件:Form表单总结前言本篇文章是2023年最新黑马JavaWeb开发笔记09:ElementUI代码进入教程、常用组件使用的总结,帮助需要学习Web开发的朋友温故而知新。El......
  • pyautogui的一些自动化示例,附代码
    以下为您提供一些pyautogui的自动化示例及代码:模拟鼠标点击和移动:importpyautogui#获取屏幕的宽度和高度screen_width,screen_height=pyautogui.size()#将鼠标移动到屏幕中心pyautogui.moveTo(screen_width/2,screen_height/2)#在屏幕中心点击鼠标左键......
  • 代码随想录算法day2-数组2
    题目1209.长度最小的子数组给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于target的长度最小的子数组[numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。示例1:输入:target=7,nums=[2,......
  • 服务器出现 HTTP 错误代码,及解决方法
    HTTP400-请求无效HTTP401.1-未授权:登录失败HTTP401.2-未授权:服务器配置问题导致登录失败HTTP401.3-ACL禁止访问资源HTTP401.4-未授权:授权被筛选器拒绝HTTP401.5-未授权:ISAPI或CGI授权失败HTTP403-禁止访问HTTP403-对Internet服务管理器的......
  • 代码随想录day44 || 1143 最长公共子序列, 1035 不相交的线, 53 最大子序列和, 392 判
    1143最长公共子序列funclongestCommonSubsequence(text1string,text2string)int{ //思路和判断最长公共数组一样 //dp[i][j]表示以text1[i],text2[j]为结尾的最长公共子序列的长度 //iftext1[i]==text2[j]{dp[i+1][j+1]=dp[i][j]+1}else{dp[i+1][j+1]=......
  • xhprof nginx配置的预加载代码
    <?php//var_dump(function_exists("register_shutdown_function"));//根据参数控制是否开启xhprofif((rand(1,100)>=1||!empty($_GET['xhprof']))&&PHP_SAPI!='cli'&&function_exists('xhprof_enable'))......
  • AirSlam C++ 代码学习
    问题1:reserve函数是什么?reserve是C++标准库中std::vector类的一个成员函数,用于预留一定数量的内存空间,以避免在向量增长时频繁进行内存分配和复制操作,从而提高性能。具体来说,reserve(n)会为向量预留至少n个元素的内存空间,但不会改变向量的大小(即不会添加任何元素)。这......
  • RFFT:数据与代码已开源,京东推出广告图生成新方法 | ECCV 2024
    论文将多模态可靠反馈网络(RFNet)结合到一个循环生成图片过程中,可以增加可用的广告图片数量。为了进一步提高生产效率,利用RFNet反馈进行创新的一致条件正则化,对扩散模型进行微调(RFFT),显著增加生成图片的可用率,减少了循环生成中的尝试次数,并提供了高效的生产过程,而不牺牲视觉吸引力。......
  • 代码随想录算法训练营第四十三天 | 300.最长递增子序列 , 674. 最长连续递增序列 , 718.
    目录300.最长递增子序列 思路1.dp[i]的定义2.状态转移方程3.dp[i]的初始化4.确定遍历顺序 5.举例推导dp数组方法一:动态规划方法二:贪心心得收获 674.最长连续递增序列思路动态规划1.确定dp数组(dptable)以及下标的含义2.确定递推公式3.dp数组如何初始化4.......