Java的內部類(Inner Class)和巢狀類(Nested Class)的區別
內部類是類中類(內部類不為同一包的其他類可見,具有很好的封裝性),分為靜態內部類,成員內部類,區域性內部類以及匿名內部類;區域性內部類寫在方法裡面;用到最多的就是匿名內部類,例子如下:
首先定義一個介面:Interface A{ public void method();}
然後 A a = new A(){public void method{ System.out.println("hehe!");}}
上面表示式等號右邊就是一個匿名內部類,事實上它是一個沒有名稱的介面A的實現類。
1. 靜態的內部類稱為巢狀類,巢狀類不能直接引用外部類的non-static屬性和方法,建立巢狀類物件時不依賴外部類物件;
2. 靜態內部類沒有了指向外部的引用,和C++的巢狀類很相像了,Java內部類和C++巢狀類最大的不用在於是否具有指向外部引用這點;
3. 在任何非靜態內部類中,都不能有靜態資料、靜態方法或者又一個靜態內部類(也就是不止一層),然後靜態內部類可以擁有這一切。
相關推薦
Java的內部類(Inner Class)和巢狀類(Nested Class)的區別
內部類是類中類(內部類不為同一包的其他類可見,具有很好的封裝性),分為靜態內部類,成員內部類,區域性內部類以及匿名內部類;區域性內部類寫在方法裡面;用到最多的就是匿名內部類,例子如下: 首先定義一個介面:Interface A{ public void method();}
靜態巢狀類(Static Nested Class)和內部類(Inner Class)的不同
答:Static Nested Class是被宣告為靜態(static)的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化,其語法看起來挺詭異的,如下所示。 /** * 撲克類(一副撲克) * @author 駱昊 * */pu
靜態巢狀類(Static Nested Class)和內部類(Inner Class)的不同?
Static Nested Class是被宣告為靜態(static)的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化,其語法看起來挺詭異的,如下所示。 1 2 3 4 5
靜態巢狀類(Static Nested Class)和內部類(Inner Class)
一. 什麼是巢狀類及內部類? 可以在一個類的內部定義另一個類, 這種類稱為巢狀類(nested classes),它有兩種型別: 靜態巢狀類和非靜態巢狀類.靜態巢狀類使用很少, 最重要的是非靜態巢狀類, 也即是被稱作為 內部類(inner).巢狀類從JDK1.1
Java內部類(inner Class)和巢狀類(static inner Class)也就是靜態內部類的區別
內部類和靜態類有著本質的區別,有點類似普通成員變數和靜態成員變數的區別。 . 內部類可以看成是外部類的普通成員變數,這個成員變數可以使用外部類的屬性(靜態和非靜態),可以呼叫外部類的方法(靜態和非靜態),而且內部類還持有外部類物件作為其自身的一個屬性,這個屬
java中接口(interface)和虛基類(abstract class)的區別
private 特定 知識庫 價值 ceo 實現 相互 定義 協調 在Java語言中,abstract class和interface是支持抽象類定義的兩種機制。正是由於這兩種機制的存在,才賦予了Java強大的面向對象能力。abstract class和interface之
從頭認識java-8.9 巢狀類(使用static的內部類)
這一章節我們來討論一下巢狀類。1.概念內部類使用static的時候就是巢狀類。package com.ray.ch07; public class Test { private static class MyTest3{} }MyTest3就是巢狀類2.注意點(1)只
Java巢狀類(內部類)總結
巢狀類(nested class)是指被定義在另一個類的內部的類。巢狀類的目的應該只是為它的外圍類(enclosing class)提供服務。如果巢狀類將來可能會用於其他某個環境中,它就應該是頂層類,而不是被設計為巢狀類。巢狀類分如下四種: 靜態成員類(static mem
為什麼Java內部類要設計成靜態和非靜態兩種
作者:Paranoid 連結:https://www.zhihu.com/question/28197253/answer/365692360 來源:知乎 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 首先,我們需要明白,為什麼要設計Java內部
java之LineNumberReader類,裝飾者模式,列印流,合併流(檔案合併和分割)和第三方工具類(FileNameUtils)
一.LineNumberReader類 public class Kll { public static void main(String[] args) throws IOException { File file = new File("
java內部類的可見性總結和java內部類的建立
定義: 將一個類的定義放在另一個類定義的內部,這就是內部類.1.功能1: 程式碼的隱藏和組織機制.內部類的可見性: 由在定義內部類時的訪問控制權限決定(前提是外圍類是public的)public : 在任何其他類中都可見,前提是要用"外部類名.內部類名"
面向物件學習--巢狀類(Nested Class)
public class Outside { static Outside() { Console.WriteLine("Outside Inilizlized"); } public void SayIt() { Nested.Run
java 內部類來將執行緒 程式碼隱藏在類中
package org.rui.thread.basic; import java.util.concurrent.TimeUnit; /** * 有時通過使用內部類來將執行緒 程式碼隱藏在類中 將會很有用,就像下面這樣: * ----- * InnerThrea
第十章 內部類 內部類和巢狀類
1.內部類訪問外圍類的成員方法 內部類可以訪問其外圍類的方法和欄位,就像他們自己的一樣。當某個外圍類的物件建立一個內部類物件時,此內部類物件必定會祕密地捕獲一個指向那個外圍類物件的引用。 在訪問此外圍類成員的時候,就用那個引用去訪問外圍類的成員,內部類物件只能在與其外圍類的
硬聚類(HCM)和模糊聚類(FCM)在彩色影象分割中的具體應用
示例工程見: 一年前我寫過模糊聚類演算法(FCM)和硬聚類演算法(HCM)的VB6.0實現及其應用 一文,之後,有不少同仁向我詢問如何將這個演算法應用在彩色影象的分割上,鑑於影象資料的特殊性,這裡簡單的談談在影象中聚類演算法的需要注意一些細節。 C均值
巢狀類(Nested Classes)
Java語言允許你在一個類中再定義類,這樣的類,我們稱之為巢狀類。格式如下: class OuterClass{ ... class NestedClass{ ... } } 術語:巢狀類分為兩種,一種是靜態;一種是非靜態。宣告為靜態的稱之為靜態巢狀類;非靜態的稱之為內部類
java中的靜態類和巢狀類
在Java中類可以是靜態的麼? 在Java中類可以是靜態的。在Java中有靜態例項變數,靜態方法,以及靜態塊,類也可以是靜態的。在Java中我們可以在類中再次定義一個類。這種類被稱為巢狀類。巢狀類外圍的類被稱為外部類。在Java中不能使最頂層類為靜態類,而只
C/C++ 區域性類和巢狀類
class Interface { public: virtual void Fun() = 0; }; template <class T, class P> Interface* MakeAdapter(const T& obj, const P& arg) {
【java面試題】Static Nested Class(巢狀類) 和 Inner Class(內部類)的不同 、final、static
前言: 本來是想總結一下inner class 的用法,但是卻發現這幾位頗為親近。索性一起拉出來溜溜。 寫作目的: 跟 static , final, inner class 搞好關係,以便將來遇見了,就像用if ,else一樣,一清二楚。 文中的術語定義以java language spec為準。 先想想
java 內部類(inner class)詳解
ron isp https nerd 對象 重寫 prot print 元素 優點 ⒈ 內部類對象可以訪問創建它的對象的實現,包括私有數據; ⒉ 內部類不為同一包的其他類所見,具有很好的封裝性; ⒊ 使用內部類可以很方便的編寫事件驅動程序; ⒋ 匿名內部類可以方便的定義運行