//InitializationTest.java
package foldConstructor;
// //父类的定义
class Parent {
int pm1;
int pm2 = 10;
int pm3 = pmethod();
{
System.out.println("Parent's instance initialize block");
}
public static int spm1 = 10;
static {
System.out.println("Parent's static initialize block");
}
Parent() {
System.out.println("Parent's default constructor");
}
static void staticmethod() {
System.out.println("Parent's staticmethod");
}
int pmethod() {
System.out.println("Parent's method");
return 3;
}
}
class Child extends Parent {
int cm1;
int cm2 = 10;
int cm3 = cmethod();
Other co;
public static int scm1 = 10;
{
System.out.println("Child's instance initialize block");
}
static {
System.out.println("Child's static initialize block");
}
Child() {
co = new Other();
System.out.println("Child's default constructor");
}
Child(int m) {
this();
cm1 = m;
System.out.println("Child's self-define constructor");
}
static void staticmethod() {
System.out.println("Child's staticmethod");
}
int cmethod() {
System.out.println("Child's method");
return 3;
}
}
class Other {
int om1;
Other() {
System.out.println("Other's default constructor");
}
}
public class InitializationTest {
public static void main(String args[]) {
Child c;
System.out.println("program start");
// System.out.println(Child.scm1);
// Child.staticmethod();
c = new Child(10);
Child.staticmethod();
System.out.println("program end");
}
}
//通过java的javap来反汇编:
// javap -c -classpath . Child