父类
package test;
public class Parent {
public static int a = menthod2();
public int b = 11;
{
System.out.println("父快类的非静态块");
}
static {
System.out.println("父类的静态块");
}
public Parent(){
System.out.println("父类的构造函数");
}
public static void menthod(){
System.out.println("父类的静态方法");
}
public static int menthod2(){
System.out.println("父类的静态变量");
return 10;
}
public void menthod1(){
System.out.println("父类的非静态方法");
}
}
子类
package test;
public class Parent {
public static int a = menthod2();
public int b = 11;
{
System.out.println("父快类的非静态块");
}
static {
System.out.println("父类的静态块");
}
public Parent(){
System.out.println("父类的构造函数");
}
public static void menthod(){
System.out.println("父类的静态方法");
}
public static int menthod2(){
System.out.println("父类的静态变量");
return 10;
}
public void menthod1(){
System.out.println("父类的非静态方法");
}
}
测试得到
public class Test {
public static void main(String[] args) {
Child child = new Child();
child.menthod();
}
}
输出:
父类的静态变量
父类的静态块
子类的静态变量
子类的静态块
父快类的非静态块
父类的构造函数
子类的非静态块
子类的构造函数
子类的静态方法
说明Jvm的执行顺序是:
父类的静态变量----->父类的静态块----->子类的静态变量------>子类静态块------>父类的非静态块------>父类的构造函数------>子类的非静态块---子类的构造函数
----->子类的静态方法
注意: char类型的基本类型初始化的时候值为null
一个构造函数中只能调用另外一个构造函数,不能同时调用两个构造函数..