Java继承:深入探讨父类成员变量初始化顺序
本文探讨Java继承中父类成员变量的初始化时机,并纠正一些常见的误解。 《On Java》一书中提到“变量定义会在任何方法(包括构造器)调用之前被初始化”,但这与实际执行情况略有出入。
我们以一个CADSystem类继承Shape类的例子为例,深入分析其初始化过程。 关键在于,父类成员变量的初始化并非发生在子类构造器super()调用之前,而是插入到super()调用与子类构造器体之间。
具体来说,CADSystem类的初始化过程如下:
立即学习“Java免费学习笔记(深入)”;
因此,实际的输出顺序为:
Shape Shape Line CADSystem
之所以出现两次"Shape"输出,是因为父类Shape的初始化过程在子类构造器执行的过程中被穿插执行,而非完全在子类构造器之前。 这也说明了,书中关于变量初始化时机规则的描述需要更精确的理解。 实际执行顺序更准确地反映了Java的初始化机制。
以上就是Java继承中,父类成员变量初始化究竟在何时发生?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号