一.java类实例化的顺序:
父类:static{}(无名称方法体)
子类:static{}(无名称方法体)
父类:{}(无名方法体)
父类 构造函数
子类 {}(无名方法体)
子类 构造行数
二.静态方法/变量使用的场合
1,当多个对象共享某个变量或者方法时
测试代码,输出的结果一目了然
class
A{
protected static String name = " jessie " ;
static {
System.out.println( " static none name method of super(A) class " );
}
{
System.out.println( " none name method of super(A) " );
}
public A(){
System.out.println( " constructor of super(A) " );
}
protected static void getName()
{
System.out.println(name);
}
protected static void setName(String pname)
{
name = pname;
System.out.println(name);
}
}
class B extends A{
static {
System.out.println( " static none name method of sub(B) class " );
}
{
System.out.println( " none name method of sub(B) class " );
}
public B(){
System.out.println( " constructor sub(B) " );
}
}
class C extends B{
public C(){
System.out.println( " constructor of sub class(C) " );
}
}
public class StyleTest3{
public static void main(String[] ars){
A ab = new B();
System.out.println( " ************************** " );
ab = new B();
System.out.println( " ************************** " );
B BTest = new B();
System.out.println( " ************************** " );
C CTest = new C();
System.out.println( " ************************** " );
CTest.getName();
CTest.setName( " shirley " );
BTest.getName();
CTest.getName();
}
}
protected static String name = " jessie " ;
static {
System.out.println( " static none name method of super(A) class " );
}
{
System.out.println( " none name method of super(A) " );
}
public A(){
System.out.println( " constructor of super(A) " );
}
protected static void getName()
{
System.out.println(name);
}
protected static void setName(String pname)
{
name = pname;
System.out.println(name);
}
}
class B extends A{
static {
System.out.println( " static none name method of sub(B) class " );
}
{
System.out.println( " none name method of sub(B) class " );
}
public B(){
System.out.println( " constructor sub(B) " );
}
}
class C extends B{
public C(){
System.out.println( " constructor of sub class(C) " );
}
}
public class StyleTest3{
public static void main(String[] ars){
A ab = new B();
System.out.println( " ************************** " );
ab = new B();
System.out.println( " ************************** " );
B BTest = new B();
System.out.println( " ************************** " );
C CTest = new C();
System.out.println( " ************************** " );
CTest.getName();
CTest.setName( " shirley " );
BTest.getName();
CTest.getName();
}
}