無法從靜態上下文中引用非靜態變數
non-static variable mainframe cannot be referenced from a static context
即在靜態方法中不能引用非靜態變數
為什麼?
因為我們知道靜態的方法可以在沒有建立例項時使用,而申明為非靜態的成員變數是一個物件屬性,它只有在物件存在時引用,因此如果在物件未建立例項時我們在靜態方法中呼叫了非靜態成員方法自然是非法的,所以編譯器會在這種時候給各錯誤.
簡單說來,靜態方法可以不用建立物件就呼叫,非靜態方法必須有了物件的例項才能呼叫.因此想在靜態方法中引用非靜態方法是不可能的,因為它究竟引用的是哪個物件的非靜態方法呢?編譯器不可能給出答案,因為沒有物件啊,所以要報錯.
介面是抽象的。介面中的方法可以不必被實現。
相關推薦
"無法從靜態上下文中引用非靜態變量,非靜態方法"
使用 對象 上下文 類變量 static 非靜態變量 初始化 方法 log 原因:1.用static修飾的方法稱為靜態方法,修飾變量則為靜態變量,又分別叫做類方法或者類變量。 2.靜態的方法可以在沒有創建實例時使用,而申明為非靜態的成員變量是一個對象屬性,它只有在對象存在時
無法從靜態上下文中引用非靜態變數
non-static variable mainframe cannot be referenced from a static context 即在靜態方法中不能引用非靜態變數 為什麼? 因為我們知道靜態的方法可以在沒有建立例項時使用,而申明為非靜態的成員變數是一個物件屬
java學習遇到的問題 無法從靜態上下文中引用非靜態變數、方法。
在寫java的斐波那契數列遞迴時遇到了一個問題。 public class Fibonacci { public static void main(String []args) { int x = f(6); System.out.println(x); } publ
無法從靜態上下文中引用非靜態方法
用static修飾的方法稱為靜態方法,修飾變數則為靜態變數,又分別叫做類方法或者類變數。 靜態方法中不能直接呼叫非靜態方法。因為非靜態方法不是獨立存在的,它是依附於物件存在——即只有申明瞭物件,才能通
無法在靜態上下文中引用非靜態
轉載自:https://blog.csdn.net/cool_ben/article/details/49334655 如下是經典的Fobonacci遞迴演算法: public class Fibonacci { public static void main(String []args)
C#變數初始化問題:欄位初始值無法引用非靜態欄位、方法或屬性
問題:欄位初始值設定項無法引用非靜態欄位、方法或屬性的問題 下面程式碼出錯的原因,在類中定義的欄位為什麼不能用? (1) public string text = test(); //提示 欄位或屬性的問題欄位初始值設定項無法引用非靜態欄位、方法 protected vo
欄位初始值無法引用非靜態欄位、方法
欄位初始值設定項無法引用非靜態欄位、方法或屬性 如 int i= 此值是用來初始化欄位i的 不能使用非靜態欄位 [c-sharp] view plaincopyprint? //錯誤 int j=5; int i=j ; //此行報出此編譯錯誤 正確 int i=5 //或 static
非靜態內部類、非靜態匿名內部類會持有外部物件的引用
3、適當的考慮下是否應該使用執行緒.Android應用框架設計了許多的類來簡化執行後臺任務,我們可以使用與Activity生命週期相關聯的Loaders來執行簡短的後臺查詢任務。如果一個執行緒不依賴與Activity,我們還可以使用Service來執行後臺任務,然後用BroadcastReceive
java裡的::也可以引用非靜態方法
在java 1.8裡如下引用靜態方法的程式碼是可以編譯通過的: // public static String format(String format, Object... args) BiFunction<String, Object[], String>
java靜態方法中不能引用非靜態變數
靜態方法和靜態變數是屬於某一個類,而不屬於類的物件。 因為我們知道靜態的方法可以在沒有建立例項時使用,而申明為非靜態的成員變數是一個物件屬性,它只有在物件存在時引用,因此如果在物件未建立例項時我們
靜態內部類和非靜態內部類的區別
依賴 table width idt 靜態屬性 bsp 訪問 實例化 外部 靜態屬性和方法 訪問外部類的屬性和方法 實例化 靜態內部類 有 只能訪問靜態的 依賴於外部類的實例 非靜態內部類 無 所有 可以直接實例化 靜態內部類和非靜態內部類的區別
Java子類與父類中靜態程式碼塊、非靜態程式碼塊、建構函式的執行順序一覽表
子類Child繼承父類Parent Child child=new Child(); 執行順序如下: ①父類靜態程式碼塊>>②子類靜態程式碼塊>>③父類非靜態程式碼塊>>④父類建構函式>>⑤子類非靜態程式碼塊>>⑥子類
Java的靜態內部類與非靜態內部類的區別
1 static 靜態修飾符 在程式中任何變數或者程式碼都是在編譯時由系統自動分配記憶體來儲存的。 static修飾表示靜態的,在類載入時JVM會把它放到方法區,被本類以及本類中所有例項所公用。在編譯後所分配的記憶體會在一直存在,直到程式退出記憶體才會釋放這個空間。如果一個被所有例項
靜態內部類和非靜態內部類之間的區別
靜態內部類和非靜態內部類之間的區別 /* * https://blog.csdn.net/xiaomogg/article/details/78231356 */ class OuterClass { public static class StaticInnerClass {
靜態內部類和非靜態內部類
結論: 1.靜態內部類只能夠訪問外部類的靜態成員,非靜態內部類可以訪問外部類的所有成員。 2.靜態內部類能有靜態成員(方法、屬性),非靜態內部類不能有靜態成員(方法、屬性)。 3.靜態內部類和非靜態內部類在建立時有區別。靜態內部類即使外部類沒有被建立時依然存在。非靜態內部類必須通過外部物
java synchronized(靜態同步方法、非靜態同步方法及同步塊)
同步方法 同步方法所擁有的鎖就是該方法所屬的類的物件鎖,換句話說,也就是this物件,而且鎖的作用域也是整個方法,這可能導致其鎖的作用域可能太大,也有可能引起死鎖,同時因為可能包含了不需要進行同步的程式碼塊在內,也會降低程式的執行效率。 同步方法的鎖 同
靜態程式碼塊與非靜態程式碼塊的區別(Java)
靜態程式碼塊是以static修飾的程式碼塊,反之沒有用static修飾的程式碼塊為非靜態程式碼塊,如下所示: 靜態程式碼塊: static{ 若干程式碼 } 非靜態程式碼塊: { 若干程式碼 } 它們之間的區別主要如下: 靜態程式碼塊在虛擬機器載
JAVA 在外部類外部訪問內部類,靜態內部類和非靜態內部類的區別
在外部類外部訪問非靜態類內部類: package a; class Wai{ class Nei{ int i=3; } } public class test{ public
Java 靜態內部類 與 非靜態內部類的區別?什麼時候用靜態內部類,又是什麼時候用非靜態內部類?
Java中內部類載入時間:一般是隻有運到了才會初始化,而不是外部內載入的時候(不管是靜態還是非靜態內部類)。 注意到一個問題: 內部類只有是靜態的,其內部類中才能有靜態屬性和靜態方法; 如果內部類非靜態的,其內部類不能有靜態屬性和靜態方法。 例子: public cla
靜態內部類與非靜態內部類
靜態內部類: 靜態內部類也是定義在另一個類裡面的類,只不過在類的前面多了一個關鍵字static。 非靜態內部類不能有靜態成員: 對於java類載入順序我們知道,首先載入類,執行static變數初始化,接下來執行物件的建立,如果我們要執行程式碼中的變數i初始化, 那麼必須先