父类A:
package com.yxj;
/**
* @author xinjian
* @create 2018/12/10
* class a as a parentClass
*/
public class A {
public A(){
System.out.println("A 的 构造方法");
}
public static void staticMethod(){
System.out.println("A 的静态方法");
}
static {
System.out.println("A 静态代码块");
}
public void testMethod(){
System.out.println("A 的普通方法");
}
}
A的子类B:
package com.yxj;
import java.net.URL;
import java.util.Enumeration;
/**
* @author xinjian
* @create 2018/12/10
*/
public class B extends A{
public B(){
System.out.println("B 的 构造方法");
}
static {
System.out.println("B 静态代码块");
}
public static void staticMethod(){
System.out.println("B 的静态方法");
}
@Override
public void testMethod(){
System.out.println("B 的普通方法");
}
public static void main(String[] args) {
A a = new B();
a = new B();
a.staticMethod();
}
}
main函数执行输出结果:
A 静态代码块
B 静态代码块
A 的 构造方法
B 的 构造方法
A 的 构造方法
B 的 构造方法
A 的静态方法
总结:静态代码块只会执行一次,创建子类会先创建父类,父类引用指向子类对象但是静态方法调用还是父类的静态方法。