Java-為什麼非靜態內部類裡面不能定義靜態方法、靜態成員變數、靜態初始化塊?
首先要明確一點:
static修飾方法、成員變數是屬於類自己的。並不屬於特定的某個物件。所以我們可以像這樣使用static修飾的方法、變數:ClassName.methodName、ClassName.variable,而不用先new一個Class出來。通過new出來的物件就是特定的某一個物件。所以還有這麼一說,不能在靜態方法內使用非靜態的成員變數,因為這個成員變數不是類自己的,而是某一個物件的,你不能確定在使用這個成員變數的時候這個物件存在。
解釋為什麼非靜態內部類裡面不能定義靜態方法、靜態成員變數靜態初始化塊
理解了上面對static的說明,就不難回答這個問題。首先要使用非靜態內部類
相關推薦
Java-為什麼非靜態內部類裡面不能定義靜態方法、靜態成員變數、靜態初始化塊?
首先要明確一點: static修飾方法、成員變數是屬於類自己的。並不屬於特定的某個物件。所以我們可以像這樣使用static修飾的方法、變數:ClassName.methodName、ClassName
《為什麼非靜態內部類中不能有static屬性的變數,卻可以有static final屬性的變數?》
每當我們翻閱有關Java的入門書籍,進入關於內部類的章節時,我們經常可以看到某某書上寫道: ——非靜態實名內部類(成員內部類)中不能含有static修飾的變數,但是可以含有st
靜態內部類使用注入的方法屬性
前言 /** * @Desc: 獲取access_toaken * @Author HealerJean * @Date 2018/5/25 上午11:34. */ @Slf4
java執行緒安全問題之靜態成員變數、例項成員變數、區域性變數
Java執行緒安全問題之靜態成員變數、例項成員變數、區域性變數 java多執行緒程式設計中,存在很多執行緒安全問題,至於什麼是執行緒安全呢,給出一個通俗易懂的概念還是蠻難的,如同《java併發程式設計實踐》中所說: 寫道 給執行緒安全下定義比較困難
C++類的靜態成員變數一定要初始化(分配記憶體)
文章轉載自https://my.oschina.net/u/1537391/blog/219432 我們知道C++類的靜態成員變數是需要初始化的,但為什麼要初始化呢。其實這句話“靜態成員變數是需要初始化的”是有一定問題的,應該說“靜態成員變數需要定義”才是準確的,而不是初始化
Java類成員變數、普通成員變數、初始化塊、構造方法的初始化和執行順序
序言 關於類的static成員變數初始化、static初始化塊、例項的普通成員變數初始化、例項的普通初始化塊以及建構函式的執行順序,我一直不是十分明確地知道,今天專門花了幾個小時的時間參考網上資料設計出了比較明瞭的測試程式碼,有程式碼有結果有真相。總體而言,sta
關於java中成員變數有預設初始化而區域性變數沒有
在java中如果沒有給成員變數賦值java會自動賦0,而對於區域性變數卻不會這是為什麼呢?下面就討論下java如何給成員變數賦值的。 1普通成員變數:對於普通成員變數而言,當你例項化的時候通過建構函式java會自動賦0。如下 public class test { in
Java非靜態內部類外部this物件和final型別詳解
1. 非靜態內部類是如何引用外部類this物件的 Java內部類分為靜態內部類和非靜態內部類。它們有一個比較大的區別在於,非靜態內部類擁有外部類的this物件的引用,從而使得非靜態內部類可以訪問外部類的成員函式,成員變數。這個結論我們大家都比較清楚,那麼原理大家都懂嗎?這篇文章我講通
Java的靜態內部類與非靜態內部類的區別
1 static 靜態修飾符 在程式中任何變數或者程式碼都是在編譯時由系統自動分配記憶體來儲存的。 static修飾表示靜態的,在類載入時JVM會把它放到方法區,被本類以及本類中所有例項所公用。在編譯後所分配的記憶體會在一直存在,直到程式退出記憶體才會釋放這個空間。如果一個被所有例項
java-為什麼非靜態內部類中不能有static修飾的屬性,但卻可以有final常量?
- 例: 1 public class Demo{ 2 int x; 3 class A{ 4 static int a = 0; //這樣寫是不合法的. 5 static final int b=0; //這樣寫是合法的 6
java-為什麽非靜態內部類中不能有static修飾的屬性,但卻可以有final常量?
static變量 虛擬機 修飾 要求 public col 什麽 常量 logs - 例: 1 public class Demo{ 2 int x; 3 class A{ 4 static int a = 0; //這樣寫是不合法
“全棧2019”Java第七十六章:靜態、非靜態內部類訪問權限
inf 內部類 靜態 alt intel com 詳解 int 文章 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Java第七十六章:靜態、非靜
“全棧2019”Java第七十六章:靜態、非靜態內部類訪問許可權
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第七十六章:靜態、非靜態內部類訪問許可權 下一章 “全棧2019”Java第七十七章:抽象內
JAVA 在外部類外部訪問內部類,靜態內部類和非靜態內部類的區別
在外部類外部訪問非靜態類內部類: package a; class Wai{ class Nei{ int i=3; } } public class test{ public
Java非靜態內部類和靜態內部類,訪問父類的非靜態和靜態成員變數及成員函式
public class Test { // Not static variable private int mAge = 10; // Static variable private static int mId = 1; // Single inst
Java 靜態內部類 與 非靜態內部類的區別?什麼時候用靜態內部類,又是什麼時候用非靜態內部類?
Java中內部類載入時間:一般是隻有運到了才會初始化,而不是外部內載入的時候(不管是靜態還是非靜態內部類)。 注意到一個問題: 內部類只有是靜態的,其內部類中才能有靜態屬性和靜態方法; 如果內部類非靜態的,其內部類不能有靜態屬性和靜態方法。 例子: public cla
Java非靜態內部類為什麼不能有靜態成員
對於java類載入順序我們知道,首先載入類,執行static變數初始化,接下來執行物件的建立,如果我們要執行程式碼中的變數i初始化,那麼必須先執行載入OuterClass,再載入Innerclass,最後初始化靜態變數i,問題就出在載入Innerclass上面,我們可以把
Java內部類(3):非靜態內部類為什麼不能有靜態成員變數和靜態方法。
首先要明白以下三點: static型別的屬性和方法,在類載入的時候就會存在於記憶體中。 要想使用某個類的static屬性和方法,那麼這個類必須要載入到虛擬機器- 中。 非靜態內部類並不隨外部類一起載入,只有在例項化外部類之後才會載入。 現在考慮這個情
java非靜態內部類為何不能有靜態的成員?
1,部落格---記錄自己的點滴成長 2,最近接觸到關鍵字這一塊,遇到一比較棘手的問題---java非靜態內部類為何不能有靜態(static)的成員? 3,首先解釋幾個概念: 1)內部類---顧名思義,內部類就是在一個類(外部類)的內部再定義一個類(內部類),這個
Java中Static Class及靜態內部類和非靜態內部類與靜態導包
上次有朋友問我,java中的類可以是static嗎?我給他肯定的回答是可以的,在java中我們可以有靜態例項變數、靜態方法、靜態塊。當然類也可以是靜態的,下面小編整理了些關於java中的static class相關資料分享在指令碼之家平臺供大家參考 java中的類可以是