黑马程序员技术交流社区

标题: 代码的运行结果求解释 [打印本页]

作者: 溦丨涼    时间: 2015-7-18 15:51
标题: 代码的运行结果求解释
  1. class HelloA {

  2.     public HelloA() {
  3.         System.out.println("HelloA");
  4.     }
  5.    
  6.     { System.out.println("I'm A class"); }
  7.    
  8.     static { System.out.println("static A"); }

  9. }

  10. public class HelloB extends HelloA {
  11.     public HelloB() {
  12.         System.out.println("HelloB");
  13.     }
  14.    
  15.     { System.out.println("I'm B class"); }
  16.    
  17.     static { System.out.println("static B"); }
  18.    
  19.     public static void main(String[] args) {
  20.      new HelloB();
  21.    }

  22. }
复制代码

如上
作者: Matrix_heima    时间: 2015-7-18 16:34
static A static B I'm A class HelloA I'm B class HelloB
作者: 嘟嘟嘟嘟嘟    时间: 2015-7-18 16:52
楼主这代码有错,mian 方法要在HelloB外,新建一个类Test放main方法吧.
运行结果:
开始运行:new HelloB() 后,开始运行HelloB的构造方法,里面第一行是隐式的super
static A -->首先运行的是父类的 static 代码块
static B -->接着运行子类static代码块
I'm A class -->接着运行父类的构造代码块
HelloA -->父类构造函数运行
I'm B class -->回到子类,首先运行构造代码块
HelloB --->构造函数运行





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2