import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.annotation.PostConstruct;
class T {
static {
System.out.println("1");
}
{
System.out.println("2");
}
T() {
System.out.println("父类构造");
}
public static void got(){
System.out.println("调用T类的方法,静态方法");
}
static {
System.out.println("3");
}
{
System.out.println("4");
}
}
public class Test extends T {
public Test() {
System.out.println("子类构造函数");
}
static {
System.out.println("5");
}
{
System.out.println("6");
}
public static void main(String[] args) {
Test.got();
System.out.println("=====================");*/
Test.post();
}
public void get(){
System.out.println("调用Test类的方法");
}
public static void post(){
System.out.println("调用Test类的静态方法");
}
static {
System.out.println("7");
}
{
System.out.println("8");
}
}
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.annotation.PostConstruct;
class T {
static {
System.out.println("1");
}
{
System.out.println("2");
}
T() {
System.out.println("父类构造");
}
public static void got(){
System.out.println("调用T类的方法,静态方法");
}
static {
System.out.println("3");
}
{
System.out.println("4");
}
}
public class Test extends T {
public Test() {
System.out.println("子类构造函数");
}
static {
System.out.println("5");
}
{
System.out.println("6");
}
public static void main(String[] args) {
/* Test t = new Test();
t.get();
System.out.println("=====================");Test.got();
System.out.println("=====================");*/
Test.post();
}
public void get(){
System.out.println("调用Test类的方法");
}
public static void post(){
System.out.println("调用Test类的静态方法");
}
static {
System.out.println("7");
}
{
System.out.println("8");
}
}
new Test()时,输出1 3 5 7 2 4 父类的构造 6 8 子类的构造
调用Test类的内部get方法输出 1 3 5 7 2 4 父类的构造 6 8 子类的构造 调用Test类的方法
Test.got()时输出 1 3 5 7 调用T类的方法,静态方法
Test.poot()时输出 1 3 5 7 调用Test类的静态方法
其实再累内部{}只是代表在调用构造函数之前在{}中初始化,static{}只在类加载时调用
new子类的对象时,先调用父类staic{}里的东西,在调用子类里的static{},在调用父类{}的在调用父类构造方法,在调用子类构造方法
调用子类或者父类的静态方法时,先调用父类的static{}在调用子类的static{}