懒人学习Java的第一天
2021/8/13 20:06:33
本文主要是介绍懒人学习Java的第一天,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java中类及方法的加载顺序
代码
class A { private static int numA; private int numA2; static { System.out.println("A的静态字段 : " + numA); System.out.println("A的静态代码块"); } { System.out.println("A的成员变量 : " + numA2); System.out.println("A的非静态代码块"); } public A() { System.out.println("A的构造器"); } } class B extends A { private static int numB; private int numB2; static { System.out.println("B的静态字段 : " + numB); System.out.println("B的静态代码块"); } { System.out.println("B的成员变量 : " + numB2); System.out.println("B的非静态代码块"); } public B() { System.out.println("B的构造器"); } } public class Box { public static void main(String[] args) { A ab = new B(); System.out.println("---"); ab = new B(); } }
另外,在静态代码块中不能访问成员变量,想想这是为什么?它是否与成员的初始化顺序有必然的联系?
有参构造的执行情况
代码:
class A { private static int numA; private int numA2; static { System.out.println("A的静态字段 : " + numA); System.out.println("A的静态代码块"); } { System.out.println("A的成员变量 : " + numA2); System.out.println("A的非静态代码块"); } public A() { System.out.println("A的构造器"); } public A(int n) { System.out.println("A的有参构造"); this.numA2 = n; } } class B extends A { private static int numB; private int numB2; static { System.out.println("B的静态字段 : " + numB); System.out.println("B的静态代码块"); } { System.out.println("B的成员变量 : " + numB2); System.out.println("B的非静态代码块"); } public B() { System.out.println("B的构造器"); } public B(int n) { System.out.println("B的有参构造"); this.numB2 = n; } } public class ClassLoad { public static void main(String[] args) { B anotherB = new B(1);// 思考有参构造的输出结果 } }
如上代码,当调用了子类B的有参构造时,父类的构造器先执行肯定是确定无疑,但是是执行哪个构造器呢?
执行结果中可以看到,父类A依然是执行了无参构造,也就是说,如果子类构造器中未显式指定父类构造器,那么将会默认执行父类的无参构造,此时,如果你重载了一个父类的有参构造而没有指定无参构造,那么编译将不会通过!!
例如错误代码如下:
结论
父类的静态字段——>父类静态代码块——>
子类静态字段——>子类静态代码块——>
父类成员变量(非静态字段)——>父类非静态代码块——>父类构造器——>
子类成员变量(非静态字段)——>子类非静态代码块——>子类构造器
简而言之,子承父业,父先行,有静先静,字段最先,代码块在后,构造器留尾。
这篇关于懒人学习Java的第一天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求