Java 中static的詳解

大家都知道Java的核心是面向對象,可是在進行方法調用的時候,我們都必須對該類進行實例化,也就是創建類的對象,然後通過對象名進行調用成員方法和成員變量以及其他的需求。在這其中大家應該會發現一個關於static問題,static 靜態的 我們的主類就是被static修飾的,這是爲什麼呢?原來在Java中static 修飾的域,我們叫靜態域,在創建對象的時候static被該類的N個對象所共有,也就是我們在調用static修飾的方法時。
爲什麼主函數要被static 修飾 ,因爲static 修飾的區域時靜態域,自己編寫了一個類,對某些方法進行操作的時候可以讓該方法被static修飾這個樣就可以在主函數裏面通過類名調用方法了,大家應該都不陌生,但是爲什麼不需要對該類進行實例化創建對象,就可以調用方法呢,原來static修飾的類

public class MyTest3 {
    public static void main(String[] args) {
       AboutStatic aboutStatic = new AboutStatic();
       aboutStatic.eat();
    }
}
class AboutStatic {
    public void eat() {
        System.out.println("吃飯");
    }

上面的簡單代碼相信大家剛開始就會了,可是爲什麼創建該類的對象呢?可不可以通過其他辦法直接調用該類中的方法呢,當然可以只要我們讓方法被static修飾,就可以直接使用類名調用方法。
爲什麼使用static就可以直接調用方法呢?原來在Java中stati屬於類同時屬於對象,
static 方法:static 方法稱爲靜態方法,它的原理和靜態成員一樣,所以靜態方法是也是屬於類的,當類被加載後(不需要new,不需要對象),該方法就存在。
靜態方法不能引用非靜態成員,和非靜態方法 原因如下:類的靜態方法,可以在“”沒有實例化該類的任何對象”前提下調用!但是對於該類的非靜態成員,必須通過new才能獲得內存,也就是必須通過對象才能引用這個非靜態成員。
當靜態方法有可能要引用一個並不存在的對象,這當然是不容許的,是錯誤,所以java要求靜態方法不能引用非靜態成員!!!!

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