父类跟子类的调用关系:先加载父类的静态变量,然后是子类的静态变量。当new一个子类时,加载父类的非静态变量,然后是父类的构造函数,再然后是子类的非静态变量和子类的构造函数
父类和子类的调用关系:先加载父类的静态变量,然后是子类的静态变量。当new一个子类时,加载父类的非静态变量,然后是父类的构造函数,再然后是子类的非静态变量和子类的构造函数
package com.cn.test9; //父类和子类的调用关系 //先加载父类的静态变量,然后是子类的静态变量。当new一个子类时,加载父类的非静态变量,然后是父类的构造函数,再然后是子类的非静态变量和子类的构造函数 public class Beetle extends Insect { private int k=printInit("Beetle.k initialized"); public Beetle(){ System.out.println("k="+k); System.out.println("j="+j); System.out.println(k); } private static int x2=printInit("Static bettle.x2 initialized"); public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Bettle constructor()"); Beetle b=new Beetle(); // // aa demo=new aa(); // // System.out.println(demo.a); } } class aa{ protected int a; int b; public int c; private int d; } class Insect{ private int i=9; protected int j; int f=printInit("ninhao"); Insect(){ System.out.println("i="+i+",j="+j); j=39; } private static int x1=printInit("static Insect.x1 innitialized"); static int printInit(String s){ System.out.println(s); return 47; } }