java类中代码的执行顺序
来源:互联网 发布:c语言技巧 编辑:程序博客网 时间:2024/06/06 10:54
java类中代码的执行顺序
先看一下代码
package test;public class test1 { static class A{ C c = new C(); public A(){ System.out.println("A类的构造方法"); } static void eat(){ System.out.println("A类的静态方法"); } static{ System.out.println("A类的静态代码块"); } void see(){ System.out.println("A类的普通方法"); } } static class B extends A{ public B(){ System.out.println("B类的构造方法"); } static void eat(){ System.out.println("B类的静态方法"); } static{ System.out.println("B类的静态代码块"); } void see(){ System.out.println("B类的普通方法"); } } static class C{ public C(){ System.out.println("C类的构造方法"); } static void eat(){ System.out.println("C类的静态方法"); } void see(){ System.out.println("C类的普通方法"); } static{ System.out.println("C类的静态代码块"); } } public static void main(String srgs[]){ B b = new B(); System.out.println("----------------------------------------------"); System.out.println("静态类不一定有静态方法,有静态方法的一定是静态类"); System.out.println("----------------------------------------------"); C.eat(); System.out.println("----------------------------------------------"); System.out.println("静态方法可以通过 “类名.方法名”的方式调用"); System.out.println("----------------------------------------------"); C c = new C(); c.see(); }}
执行结果如下
执行流程
我们来对执行结果分析一下
我们来看main函数中的语句
B b = new B();
首先,初始化B类,初始化B类前,会先初始化A类,之后再初始化B类,而静态代码块是在类初始化时加载的。
所以初始化B类的时候:也就是执行B b完成后,程序打印出:
A类的静态代码块B类的静态代码块
接下来执行new B();
因为B继承了A类,所以要先初始化A类的属性类,即:
C c = new C();
就会对C类进行初始化、实例化的过程,执行结果如下:
C类的静态代码块C类的构造方法
如果只是类的属性类的声明,如:
C c;
则不对C类进行初始化,更不会实例化
接着就开始执行A类的构造方法,程序输出结果:
A类的构造方法
父类完成后,开始对子类的属性初始化,以及属性结构方法的调用,最后完成子类的实例化。
参考博客
0 0
- Java:类中代码的执行顺序
- Java:类中代码的执行顺序
- Java:类中代码的执行顺序
- java类中代码的执行顺序
- Java-Java类中代码块的执行顺序
- JAVA中代码段的执行顺序
- java中代码块的执行顺序
- Java中代码的执行顺序
- Java中代码块的执行顺序
- java中代码执行顺序
- Java代码中代码块的执行顺序
- java代码的执行顺序
- Java代码的执行顺序
- Java代码的执行顺序
- Java代码的执行顺序
- Java代码的执行顺序
- Java类代码执行顺序
- java类代码执行顺序
- 微信小程序 action-sheet 反馈上拉菜单
- 揭秘DDoS黑市:50块钱就能击瘫一家网站
- 方正李友“四人帮”的覆没记
- 域名配置备忘录
- MySQL函数不能创建的解决方法
- java类中代码的执行顺序
- 有关 等待队列和wait_event_interruptible() 和 wake_up()
- pip安装pkg_resources.DistributionNotFound: pip==9.0.1
- java的三大特性
- myeclipse 格式化缩进无效和格式化快捷键无效 是两个问题
- React--Components and Props(组件和属性组件)
- Android 在Gradle中优雅的配置构建环境
- 【笔记】java核心技术-equals
- 瀑布流标签