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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Insect {
  int i = 9;
  int j;
  Insect() {
    prt("i = " + i + ", j = " + j);
    j = 39;
  }
  static int x1 =  
    prt("static Insect.x1 initialized");
  static int prt(String s) {
    System.out.println(s);
    return 47;
  }
}
public class Beetle extends Insect {
  int k = prt("Beetle.k initialized");
  Beetle() {
    prt("k = " + k);
    prt("j = " + j);
  }
  static int x2 =
    prt("static Beetle.x2 initialized");
  static int prt(String s) {
    System.out.println(s);
    return 63;
  }
  public static void main(String[] args) {
    prt("Beetle constructor");
    Beetle b = new Beetle();
  }
}
  结果:Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 63
j = 39
请解释一下以上代码的运行结果,然后回答下父类中的静态方法在其子类被装载时会不会运行?

1 个回复

倒序浏览
楼主的代码 把父类的方法写在子类的构造里,子类执行构造方法的时候会先执行父类的构造方法,这时候你再去调父类的静态自然而然就可以调用了。
只要有静态就以为着 jvm虚拟机运行的时候就加载进来了 , 什么时候运行取决于你什么时候调!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马