1. 程式人生 > >Java 深入理解內部類

Java 深入理解內部類

摘自海子:Java內部類詳解

深入理解內部類

1.為什麼成員內部類可以無條件訪問外部類的成員?

  在此之前,我們已經討論過了成員內部類可以無條件訪問外部類的成員,那具體究竟是如何實現的呢?下面通過反編譯位元組碼檔案看看究竟。事實上,編譯器在進行編譯的時候,會將成員內部類單獨編譯成一個位元組碼檔案,下面是Outter.java的程式碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public  class  Outter {      private  Inner inner =  null ;      public  Outter() {
               }            public  Inner getInnerInstance() {
         if (inner ==  null )              inner =  new  Inner();          return  inner;      }             protected  class  Inner {          public  Inner() {                        }      } }

  編譯之後,出現了兩個位元組碼檔案:

  反編譯Outter$Inner.class檔案得到下面資訊:

相關推薦

java 深入理解部類以及之間的調用關系

per enc style .cn 自己 對象 說明符 我們 正常 什麽是內部類 內部類是指在一個外部類的內部再定義一個類。內部類作為外部類的一個成員,並且依附於外部類而存在的。內部類可為靜態,可用protected和private修飾(而外部類只能使用public和缺省的

Java 深入理解部類

摘自海子:Java內部類詳解 深入理解內部類 1.為什麼成員內部類可以無條件訪問外部類的成員?   在此之前,我們已經討論過了成員內部類可以無條件訪問外部類的成員,那具體究竟是如何實現的呢?下面通過反編譯位元組碼檔案看看究竟。事實上,編譯器在進行編譯的時候,會將成員內部類單獨編譯成一個位元組碼檔案,下面

Java基礎8:深入理解部類

這位大俠,這是我的公眾號:程式設計師江湖。 分享程式設計師面試與技術的那些事。 乾貨滿滿,關注就送。 本文主要介紹了Java內部類的基本原理,使用方法和各種細節。 有關內部類實現回撥,事件驅動和委託機制的文章將在後面釋出。 具體程式碼在我的GitHu

深入理解Java中為什麼部類可以訪問外部類的成員

{ final Outer this$0; flags: ACC_FINAL, ACC_SYNTHETIC Outer$Inner(Outer); flags: Code: stack=2, locals=2, args_size=2 0: a

Java 的匿名部類理解

對 Java 的匿名內部類理解 JAVA面向物件三大特性:封裝、繼承、多型。 多型:可以理解為大千世界中的物件在不同的環境下可能會有多種形態。 Java中多型存在的前提:必須存在繼承、父類的引用指向子類的物件。 匿名內部類:就是沒有名字的內部類,所以匿名內部類只能使用一次。 通常使用匿名內部類來簡化

java中匿名部類理解

如下面:     Runnable runnable = new Runnable() {                 @Override                 public void run() {                 }          

JAVA中的部類

類變量 類名 blog int 什麽 fun 位置 log static成員 將一個類定義在另一個類的裏面,裏面的那個類就叫做內部類(嵌套類,內置類) 內部類的訪問規則: 內部類可以直接訪問外部類中的成員,包括私有 外部類要訪問內部類,必須建立內部類對象 之所以可以直

JVM體系結構-----深入理解存結構

分配機制 buffer 內部 磁盤 運行期 java語言 同時 內存溢出 結束 一、概述 內存在計算機中占據著至關重要的地位,任何運行時的程序或者數據都需要依靠內存作為存儲介質,否則程序將無法正常運行。與C和C++相比,使用Java語言編寫的程序並不需要顯示

Java中,部類的概述和部類的訪問特點和部類的分類(部類的位置)

back 外部 mage 對象 post info bsp 一個 strong 內部類的概述:   把類定義在另一個類的內部,該類就被稱為內部類。   舉例:把類B定義在類A中,類B就被稱為內部類。 內部類的訪問特點:   A:內部類可以直接訪問外部類的成員,包括

java學習三部類

view 靜態變量 每一個 對象 你在 left align don 使用方法 //外部類HelloWorldpublic class HelloWorld { // 內部類Inner,類Inner在類HelloWorld的內部 public class

java基礎15 部類(成員部類、局部內部類)和匿名部類

body static 目前 還需 sleep imp 右下角 你好 private 一、內部類 1.1.1、成員內部類 一個類定義在另一個類的內部,那麽該類就叫作成員內部類 1.1.2、成員內部類訪問方式 方式一:在外部類中提供一個方法創建內部類的對

Java基礎--匿名部類

span sys rac sed hid 具體類 分析 urn 開發 一、什麽是匿名內部類   就是內部類的簡化寫法 前提:存在一個類或者接口(這裏的類可以是具體類也可以是抽象類) 格式:new 類名或者接口名(){    重寫方法;   } 二、匿名內部類的本質是什麽?

Java筆記】部類注意事項

內部類要求:Java內部類其實在J2EE程式設計中使用較少,不過在視窗應用程式設計中特別常見,主要用來事件的處理。其實,做非GUI程式設計,內部類完全可以不用。但是在Java中,內部類也相當的重要,尤其做GUI開發時候,事件的響應處理全靠內部類了。 另外內部類所做的功能使用外部類也同樣可以實現,只是

java中的部類和靜態部類

以下程式執行結果為 public class Test { public class A{ public String test="A"; } public static class B{ public Strin

java之匿名部類、成員部類、方法部類、靜態部類

一、匿名內部類:必須繼承一個類或者實現介面,不能建立建構函式。 /** * 匿名內部類 * * @author: Rodge * @time: 2018年10月4日 下午3:44:03 * @version: V1.0.0 */ public class AnonymousInner

java核心技術-部類

高階類特性-(類的成員之一:內部類) 內的成員之一:內部類(屬性、方法、構造器、程式碼塊) 可以有四種許可權訪問修飾符 注意:外部類 只有兩種 public 和 default 定義 : 可以將一個類的定義放在另一個類定義的內部,這就是內部類 -thinking in Java 用法:如果

java中的部類執行先後循序問題

首先我們要明白java中的內部類是什麼呢?有什麼好處呢?為什麼要用到內部類呢?下面這兩個部落格介紹都挺好的 https://blog.csdn.net/gaoyong_stone/article/details/79556287 https://www.cnblogs.com/hypno

Java非靜態部類外部this物件和final型別詳解

1. 非靜態內部類是如何引用外部類this物件的 Java內部類分為靜態內部類和非靜態內部類。它們有一個比較大的區別在於,非靜態內部類擁有外部類的this物件的引用,從而使得非靜態內部類可以訪問外部類的成員函式,成員變數。這個結論我們大家都比較清楚,那麼原理大家都懂嗎?這篇文章我講通

Java之靜態部類(static class)

轉載請註明出處:http://riddickbryant.iteye.com/blog/555545 在一個類中建立另外一個類,叫做成員內部類。這個成員內部類可以靜態的(利用static關鍵字修飾),也可以是非靜態的。由於靜態的內部類在定義、使用的時候會有種種的限制。所以在實際工作中用到

JAVA高階特性--部類

內部類概念 public class Outer{ class inner{ } }  特點     可以很好的實現隱藏,可以使用procted,private       可以直接訪問外部類的所有成員 ,包括私有成員.     外部內不