1. 程式人生 > 其它 >|NO.Z.00042|——————————|BigDataEnd|——|Java&static關鍵字繼承.V02|-------------------------------------|Java.v02|static關鍵字|基本概念|程式設計使用|

|NO.Z.00042|——————————|BigDataEnd|——|Java&static關鍵字繼承.V02|-------------------------------------|Java.v02|static關鍵字|基本概念|程式設計使用|



[BigDataJava:Java&static關鍵字繼承.V02]                                                                 [BigDataJava.面向物件] [|章節三|static關鍵字和繼承|static關鍵字基本概念|static關鍵字使用|]








一、static關鍵字基本概念
### --- static關鍵字基本概念

~~~     ——>        使用static關鍵字修飾成員變量表示靜態的含義,
~~~     ——>        此時成員變數由物件層級提升為類層級,也就是整個類只有一份並被所有物件共享,
~~~     ——>        該成員變數隨著類的載入準備就緒,與是否建立物件無關。
~~~     ——>        static關鍵字修飾的成員可以使用引用.的方式訪問,但推薦類名.的方式。
二、static關鍵字的作用 二、程式設計程式碼:驗證static關鍵字修飾的靜態成員(類成員) 是否被所有物件共享
### --- 程式設計程式碼

/*
    程式設計實現People類的封裝
 */
public class People {
    
    // 1.私有化成員變數,使用private關鍵字修飾
    private String name;
    private int age;
    //private String country; // 隸屬於物件層級,也就是每個物件都擁有獨立的一份
    //public static String country; // 隸屬於類層級,也就是整個類只有一份並且被所有物件共享
    private static String country;
    
    // 3.在構造方法中呼叫set方法進行合理值的判斷
    public People() {}
    public People(String name, int age/*, String country*/) {
        setName(name);
        setAge(age);
        //setCountry(country);
    }
    
    // 2.提供公有的get和set方法,並在方法體中進行合理值的判斷
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if(age > 0 && age < 150) {
            this.age = age;
        } else {
            System.out.println("年齡不合理哦!!!");
        }
    }
    public static String getCountry() {
        return country;
    }
    public static void setCountry(String country) {
        //this.country = country;
        People.country = country;
    }
    
    public void show() {
        System.out.println("我是" + getName() + ",今年" + getAge() + "歲了,來自" + getCountry());
    }
}
三、程式設計程式碼
### --- 程式設計程式碼

/*
    程式設計實現People類的測試
 */
public class PeopleTest {
    
    public static void main(String[] args) {
        
        // 3.驗證static關鍵字修飾的靜態成員(類成員)是否與建立物件無關  類名.的方式 => 無關
        //System.out.println("獲取到的國籍資訊是:" + People.country); // null
        System.out.println("獲取到的國籍資訊是:" + People.getCountry()); // null
        
        // 1.使用有參方式構造兩個People型別的物件並列印特徵
        People p1 = new People("zhangfei", 30/*, "China"*/);
        p1.show(); // zhangfei 30 China
        
        People p2 = new People("guanyu", 35/*, "China"*/);
        p2.show(); // guanyu 35 China

        System.out.println("--------------------------------------------");
        // 2.驗證static關鍵字修飾的靜態成員(類成員) 是否被所有物件共享  => 共享
        //p1.country = "蜀國";
        p1.setCountry("蜀國");
        //System.out.println("第一個物件的國籍是:" + p1.country); // 蜀國
        //System.out.println("第二個物件的國籍是:" + p2.country); // 蜀國
        System.out.println("第一個物件的國籍是:" + p1.getCountry()); // 蜀國
        System.out.println("第二個物件的國籍是:" + p2.getCountry()); // 蜀國
        
        People p3 = new People();
        //System.out.println("第三個物件的國籍是:" + p3.country); // 蜀國
        System.out.println("第三個物件的國籍是:" + p3.getCountry()); // 蜀國
    }
}
四、編譯列印
C:\Users\Administrator\Desktop>javac PeopleTest.java

C:\Users\Administrator\Desktop>java PeopleTest
獲取到的國籍資訊是:null
我是zhangfei,今年30歲了,來自null
我是guanyu,今年35歲了,來自null
--------------------------------------------
第一個物件的國籍是:蜀國
第二個物件的國籍是:蜀國
第三個物件的國籍是:蜀國








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)