成員內部類不能含有static的變數和方法
原文:http://zhidao.baidu.com/link?url=lNZTPLtTrzTHZh9r74lwCwpDgocKQZgBcYnZMbAh0hbYQMVyY8O6nFPskd68ovO6hjdoHZJbwfzPdflY7GNiea
java類載入順序,首先載入類,執行static變數初始化,接下來執行物件的建立,如果我們要執行程式碼中的變數int a 初始化,那麼必須先執行載入外部類,再載入內部類,最後初始化靜態變數 a ,問題就出在載入內部類上面,我們可以把內部類看成外部類的非靜態成員,它的初始化必須在外部類物件建立後以後進行,要載入內部類必須在例項化外部類之後完成 ,java虛擬機器要求所有的靜態變數必須在物件建立之前完成,這樣便產生了矛盾。
而java常量放在記憶體中常量池,它的機制與變數是不同的,編譯時,載入常量是不需要載入類的,所以就沒有上面那種矛盾。
相關推薦
C# static 變數 和方法
靜態成員屬於類所有,無認建立多少例項物件,靜態成員在記憶體中只有一份;例項成員屬於類的例項所有,每建立一個例項物件,例項成員都會在記憶體中分配一塊記憶體區域。 就像圖書館的書,書的數量就是圖書館這個物件的靜態變數;對於我們去前去借書的人(物件),書的數量是公共共享,且只有一份的。實力的變數,就是我們
成員內部類不能含有static的變數和方法
原文:http://zhidao.baidu.com/link?url=lNZTPLtTrzTHZh9r74lwCwpDgocKQZgBcYnZMbAh0hbYQMVyY8O6nFPskd68ovO6hjdoHZJbwfzPdflY7GNiea java類載入順序,首先載入
關於成員內部類不能有static修飾的變數和方法問題
看了幾篇部落格關於一般內部類不能有static修飾的變數,在這裡記錄一下。問題幾種解釋如下:1.“if you're going to have a static method, the whole inner class has to be static. Without
static方法中,不能訪問類內非static成員變數和方法。
因為我們知道靜態的方法可以在沒有建立例項時使用,而申明為非靜態的成員變數是一個物件屬性,它只有在物件存在時引用,因此如果在物件未建立例項時我們在靜態方法中呼叫了非靜態成員方法自然是非法的,所以編譯器會
成員內部類裡面為什麼不能有靜態成員和方法?
成員內部類裡面為什麼不能有靜態成員和方法? 非靜態內部類不能有靜態成員! 成員內部類必須先例項化外部類物件然後再例項化成員內部類; 非static的內部類,在外部類載入的時候,並不會載入它,所以它裡面不能有靜態變數或者靜態方法。 1、st
怎麼想靜態內部類可以有靜態成員和方法而成員內部類不行?
因為:(沒有理論依據,純粹是為了尋找一個思想依據) 1、成員內部類:在沒有產生外部類物件的情況下,內部類是不可能被訪問到的,即(外部類類名).(內部類類名)是不可能的,只能通過外部類的物件名來訪問!既然是屬於外部類物件的,那內部類屬性就不能提前部署在記憶體中啦,所以就不能有
成員內部類中為什麼不能有靜態方法和屬性
非靜態內部類不能有靜態成員!成員內部類必須先例項化外部類物件然後再例項化成員內部類;非static的內部類,在外部類載入的時候,並不會載入它,所以它裡面不能有靜態變數或者靜態方法。1、static型別的屬性和方法,在類載入的時候就會存在於記憶體中。2、要使用某個類的stati
Java中的null物件也可以訪問static成員變數和方法
一般來說,一個類的物件要在例項化之後才可以訪問類中的成員變數和方法。如果它還是null,通常意義上我們就認為它不能訪問類中的成員。實際上確實不提倡這樣,而且null物件確實不能訪問例項成員(變數和方法),否則會引發NULLPointerException錯誤。
java基礎15 內部類(成員內部類、局部內部類)和匿名內部類
body static 目前 還需 sleep imp 右下角 你好 private 一、內部類 1.1.1、成員內部類 一個類定義在另一個類的內部,那麽該類就叫作成員內部類 1.1.2、成員內部類訪問方式 方式一:在外部類中提供一個方法創建內部類的對
javaSE_day8_構造方法_super關鍵字_final關鍵字_static關鍵字_內部類_訪問許可權和修飾符_程式碼塊_自定義資料型別
1.構造方法 作用:用來給類的成員進行初始化操作 定義格式:許可權 方法名(引數列表){ ... } //注意:方法的名字必須和類名完全一致,構造方法不允許寫返回值型別,void也不能寫 構造方法在什麼時候執行呢:在new物件的時候,自動執行,且
java之匿名內部類、成員內部類、方法內部類、靜態內部類
一、匿名內部類:必須繼承一個類或者實現介面,不能建立建構函式。 /** * 匿名內部類 * * @author: Rodge * @time: 2018年10月4日 下午3:44:03 * @version: V1.0.0 */ public class AnonymousInner
private修飾的成員變數和方法不能被繼承?
看完程式碼就懂了: public class B extends A { public static void main(String[] args) { B b = new B(); System.out.println(b.getVal2());
Java內部類(成員內部類、靜態內部類、方法內部類、匿名內部類)
內部類 內部類是定義在一個類內部進行其他類結構的巢狀的操作。 為什麼存在內部類?1.首先看下內部類和不用內部類實現相同功能的程式碼: 不用內部類 //////不用內部類 class Outter { private String msg="pick";
【Java面試題】11 什麼是內部類?Static Nested Class 和 Inner Class的不同。
Inner Class(內部類)定義在類中的類。 (一般是JAVA的說法) Nested Class(巢狀類)是靜態(static)內部類。(一般是C++的說法) 靜態內部類:1 建立一個static內部類的物件,不需要一個外部類物件2 不能從一個static內部類的一
什麼是內部類?Static Nested Class 和 Inner Class的不同。
內部類就是在一個類的內部定義的類,內部類中不能定義靜態成員(靜態成員不是物件的特性,只是為了找一個容身之處,所以需要放到一個類中而已,這麼一點小事,你還要把它放到類內部的一個類中,過分了啊!提供內部類,不是為讓你幹這種事情,無聊,不讓你幹。我想可能是既然靜態成員
java中多型父類的成員變數和方法呼叫問題
class Super { String name = "父類名字"; public void setName(String name) { System.out.println(this.getClass());
Python內部類中如何訪問外部類中的屬性和方法
今天遇到一個Python內部類中如何訪問外部類的屬性和方法的問題,在網上查了一下,推薦以下兩種: 1. 傳入外部類的例項 #傳遞外部類的例項 class OuterClassA(object): def __init__(self): sel
java再複習——成員內部類為什麼不能定義靜態變數
java的成員內部類不可以定義靜態變數,為什麼要設計? 以及真的完全不能靜態的東西嗎? public class InnerClassDemo { class InnerClass{ //1、這樣是可以的,這樣編譯器會在編譯的時候就將這種語句變成常量值(也就是說可以
成員內部類、靜態內部類、區域性內部類和匿名內部類的理解
說起內部類這個詞,想必很多人都不陌生,但是又會覺得不熟悉。原因是平時編寫程式碼時可能用到的場景不多,用得最多的是在有事件監聽的情況下,並且即使用到也很少去總結內部類的用法。今天我們就來一探究竟。下面是本文的目錄大綱: 一.內部類基礎 二.深入理解內部類 三.內部類的使用場景和好處 四.常見的與
內部類(成員內部類、靜態內部類、方法內部類)
一:成員內部類:最常見的內部類就是成員內部類,也稱作普通內部類;1、Inner類定義在Outer類的內部,相當於Outer類的成員變數的位置,Inner類可以使用任意訪問修飾符,如:public、private、protected等。2、Inner類中定義的test()方法可