A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 向北_ 中级黑马   /  2016-3-19 22:16  /  657 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码



求输出结果

5 个回复

正序浏览
static A
static B
I'm A class
HelloA
I'm B class
HelloB
static静态代码块,先执行父类的,然后子类
因为继承关系,先执行父类的构造代码块 构造方法
最后就是子类的构造代码块 和构造方法
回复 使用道具 举报 1 0
static A
static B
I'm A class
HelloA
I'm B class
HelloB
静态代码块先加载
先是父类的 静态,然后子类的
接着是父类的构造代码块   构造方法
最后就是子类的构造代码块 和构造方法
另外程序里面父类没有public 权限,而子类有public权限
编译时会报错的
回复 使用道具 举报
static A
static B
I'm A class
HelloA
I'm B class
HelloB
静态代码块在类加载的时候 就已经加载,可以用类名直接调用
回复 使用道具 举报
1.static A
2.static B
3.I'm A class
4.HelloA
5.I'm B class
6.HelloB
先加载类文件,执行静态代码块,后父类初始化,再子类初始化,先构造代码块,再构造方法
回复 使用道具 举报
顶一个,看过这块内容,又忘了,正好复习下,谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马