最近遇到乙個疑惑,為啥靜態內部類不可以繼承非靜態內部類理解呢?一查資料,都是千篇一律,都是對內部類的講解,都不能直接找到這個疑惑的答案。請教了一些大神,最後明白了其中原委,這裡做個記錄,哪天又不清楚了可以用來看看。
看圖:
如上圖所以,要想new 非靜態內部類,必須得有外部類的例項,我們都知道靜態類、靜態內部類、一切靜態的東西都跟非靜態無關係,因為虛擬機器記憶體機制裡面他們不在乙個區域,
那麼,直接new 靜態內部類是不需要借助外部類的例項的,但是這個靜態內部類繼承了乙個非靜態內部類,那麼直接new 靜態內部類就相當於new 非靜態內部類,很顯然這麼做是不合法的。
所以這樣也就能理解這個疑惑了
成員內部類不可以有靜態屬性
成員內部類不可以有靜態屬性。如果在外部類的外部訪問內部類,使用out.inner.建立內部類物件時應注意 在外部類的內部可以直接使用inner s new inner 因為外部類知道inner是哪個類,所以可以生成物件。而在外部類的外部,要生成 new 乙個內部類物件,需要首先建立乙個外部類物件 外...
Java 的匿名內部類 非靜態內部類 靜態內部類
首先先說一下非靜態內部類與靜態內部類 這兩者斗是依附於乙個外部類的,然後在該外部類裡面實現自身的定義,在實現上的區別就是static修飾與否的區別 public class innerclasstest public void somemethod 非靜態內部類 class nonstaticcla...
匿名內部類可不可以繼承或實現介面?
答案是可以,而且是必須。不過不是那種extends的繼承方式,解釋如下 1.先了解一下匿名內部類 見名知意,匿名內部類沒有類名,而且和其他類不同,它是乙個表示式,語法類似於呼叫乙個類的建構函式,如 a a new a 此外還包含乙個 塊,塊中完成其類的定義 事實上,使用匿名內部類的前提條件就是必須繼...