1. 程式人生 > >java學習筆記(六)關鍵字static的使用

java學習筆記(六)關鍵字static的使用

package cn.com.postel.wbb.javaextends;

public class TestStatic {
    public static void main(String[] args) {
       Person p = new Person();
        // 只要類一載入就開始執行靜態程式碼塊
       System. out.println("name=" + Person.name);
        // 靜態屬性和靜態方法直接可以用過類名 .的方式呼叫
       System. out.println("name is :" + Person.name + ","
              + Person. staticMethod());
        // 非靜態屬性和非靜態方法必須先建立一個例項才可以發出對其呼叫
       System. out.println("age is :" + p.getAge() + "," + p.instaticMethod());
        /*
        * 靜態方法不能發出對非靜態方法的呼叫 ,因為呼叫非靜態方法必須先建立例項,
        * 而靜態方法執行的時候可能這個例項還沒有建立,所以不能從靜態方法發出對非靜態方法的呼叫;
        * 但是非靜態方法可以發出對靜態方法的呼叫。
        *
        *System.out.println(staticCallInstaticMethod());
        */
    }

    public String staticCallInstaticMethod() {
        return " 靜態方法呼叫非靜態方法 ";
    }
}

class Person {
    // 靜態程式碼塊
    static {
       System. out.println(" 靜態程式碼塊 ");
    }

    // 靜態屬性
    static String name = "wbb" ;

    // 非靜態屬性
    private int age = 25;

    // 靜態方法
    public static String staticMethod() {
        return " 靜態方法 ";
    }

    // 非靜態方法
    public String instaticMethod() {
        return " 非靜態方法 ";
    }

    public int getAge() {
        return age ;
    }

    public void setAge(int age) {
        this.age = age;
    }
}