Java static關鍵字、成員變量的分類和訪問、實例成員變量、靜態成員變量、成員方法的分類、靜態方法、實例方法

一、static關鍵字

引入:

我們之前定義了很多成員變量(name ,age,sex)成員變量其實我們只寫了一份,但是發現每個對象都可以用,就說明Java中這些成員變量或者方法是存在所屬性的。
有些是屬於對象的,有些是屬於類本身的。

Java是通過成員變量是否有static修飾來區分是類的還是屬於對象的。

static 含義爲 靜態
其修飾的成員(方法和成員變量)是屬於類本身的,
沒有修飾的成員屬於對象。


成員變量:

  • (1)靜態成員變量(類變量) :
    有static修飾的成員變量稱爲靜態成員變量也叫類變量,屬於類本身的,直接用類名訪問即可。

  • (2)實例成員變量
    無static修飾的成員變量稱爲實例成員變量,屬於類的每個對象的,必須用類的對象來訪問。

成員方法:

(1)靜態方法
有static修飾的成員方法稱爲靜態方法也叫類方法,屬於類本身的,直接用類名訪問即可。
(2)實例方法
無static修飾的成員方法稱爲實例方法,屬於類的每個對象的,必須用類的對象來訪問。

小結:

成員變量有2種

  • 有static修飾的屬於類叫靜態成員變量,與類一起加載一次, 直接用類名調用即可。
  • 無static修飾的屬於類的每個對象的叫實例成員變量,與類的對象一起加載,對象有多少個,實例成員變量就加載多少份。必須用類的對象調用。

成員方法有2種:

  • 有static修飾的屬於類叫靜態方法,直接用類名調用即可。
  • 無static修飾的屬於類的每個對象的叫實例方法,必須用類的對象調用。

二、成員變量的分類和訪問

按照有無static修飾成員變量分爲:

  • (1)靜態成員變量:有static修飾,屬於類本身與類一起加載一次, 直接用類名訪問即可。
  • (2)實例成員變量:無static修飾,屬於類的每個對象的,必須先創建對象,再用對象來訪問。

靜態成員變量訪問:

  • 類名.靜態成員變量。
  • 對象.靜態成員變量。(不推薦)

實例成員變量的訪問:

  • 對象.實例成員變量

public class Demo1 {

    // 1.靜態成員變量:有static修飾, 屬於類本身,直接用類名訪問即可
    public static String abcname = "abc";

    // 2.實例成員變量:無static修飾, 屬於類的對象的,必須用對象訪問
    private String name;
    private int age;

    public static void main(String[] args) {
        //1.類名.成員變量
        System.out.println(Demo1.abcname);
        //同一個類中訪問靜態成員變量可以省略類名不寫
        System.out.println(abcname);

        //2.對象.實例成員
        System.out.println(name);//報錯
        Demo1 d1 = new Demo1();
        d1.name = "efg";
        d1.age = 22;

        //3.對象。靜態成員變量(不推孝)
        //靜態成員變量屬於類,直接用類名訪問即可。
        System.out.println(d1.abcname);
    }
}

小結:

  • 靜態成員變量有static修飾,屬於類本身,與類加載一次, 因爲只有一份所以可以被類和類的對象共同訪問。
    注意:不建議用對象訪問靜態成員變量,靜態成員變量直接用類名訪問即可
  • 實例成員變量,無static修飾,屬於類的對象的,必須先創建對象,然後用對象來訪問,否則報錯

三、成員方法的分類

成員方法按照有無static修飾可以分爲:

  • (1)靜態方法:有static修飾, 屬於類,直接用類名訪問即可。
  • (2)實例方法:無static修飾, 屬於對象的,必須用對象來訪問。

靜態方法的訪問格式:

類名.靜態方法
對象.靜態方法(不推薦)

實例方法的訪問格式:

對象.實例方法


public class Demo2 {

    private String name;
    private int age;

    public static void eat(){
        System.out.println("靜態方法喫飯");
    }
    public void show(){
        System.out.println(name+age+"實例方法喫飯");
    }

    public static void main(String[] args) {
        //1.靜態方法
        eat();
        Demo2.eat();

        //2.實例方法,要用對象訪問
//        show();報錯
        Demo2 d2 = new Demo2();
        d2.name = "abc";
        d2.age = 22;
        d2.show();
    }
}

小結:

  • 靜態方法屬於類,有static修飾,直接用類名訪問即可。

  • 實例方法屬於對象,無static修飾,必須先創建對象,然後用對象來訪問。

  • 靜態方法也可以被對象共享訪問,但是不推薦,因爲靜態方法直接用類名訪問即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章