類變量/方法(靜態變量/方法)


類變量/方法(靜態變量/方法)

類變量也叫靜態變量,同樣的類方法也叫靜態方法,那么與之相對應的就有非靜態變量,非靜態方法,也叫實例變量,普通變量,普通方法。各個地方因為翻譯的問題,叫法不一樣,實際上在英文里就是一個單詞的區別 static

類變量

定義

訪問修飾符 static 數據類型 變量名;

訪問

類名.類變量名

也可以是類對象.類變量名

類變量的使用時機

當我們需要一個被所有對象所共享的一個變量時,就考慮使用,比如一個學生類,要統計每個學生所交的費用,Student(name, static fee)

類變量使用細節

  1. 類變量(靜態變量)可以被類的所有對象共享,而實例變量是每個對象獨享
  2. 加上static成為類變量(靜態變量),不加就是實例變量/普通變量/非靜態變量

類方法

類方法也叫靜態方法定義如下

定義

訪問修飾符 static 返回類型 類方法名 (){}

訪問

和類變量類似

類名.類方法名

也可以是類對象.類方法名

類方法的經典使用場景

我們都知道Java的utils包里的Math方法,比如開根號

	Math.sqrt(9);

這就是典型的類方法使用,我們用這些方法,不需要為此實例化一個對象,直接類名點上方法名就可以拿來使用,提高了我們開發效率。如果在查看源碼的時候,也可以發現這些方法前面都有static。

如果我們所寫的方法不涉及非靜態成員的使用,我們就可以吧這個定義為靜態方法,比如打印數組啦,冒泡排序啦之類的。

類方法和普通方法的不同

  1. 類方法/變量(靜態方法/變量)都是隨着類的加載而加載,類方法中沒有this的參數。

    而普通方法隱含this參數

  2. 類方法(靜態方法)可以通過類名,也可以通過對象來調用

    普通方法只能通過對象去調用,不能通過類名去調用。

  3. 類方法(靜態方法)不允許使用關於對象的關鍵字,如this,super

    而普通方法可以使用

  4. 類方法(靜態方法)只能訪問靜態成員

    普通方法可以訪問所有成員

class Person{
    private int id;
    private static total = 0;
    public static void setTotal(int total){
        this.total = total;//錯誤,static方法中不可以使用this
        id = total;//錯誤,靜態方法不可以訪問非靜態成員
        Person.total = total;
    }
    public Person (){//構造器,實際上也可以看成非靜態方法
        total++;//正確,非靜態方法可以使用靜態變量
        id = total;//正確,非靜態方法可以使用非靜態變量
    }
}
public class Test{
    public static void main(String[] args){
        Person.setTotal(3);
        new Person();
    }
}

小結

靜態方法,只能訪問靜態成員

非靜態方法,可以訪問所有成員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM