1. 程式人生 > >java中的內部類總結

java中的內部類總結

內部類不是很好理解,但說白了其實也就是一個類中還包含著另外一個類

如同一個人是由大腦、肢體、器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟:它也有自己的屬性和行為(血液、跳動)

顯然,此處不能單方面用屬性或者方法表示一個心臟,而需要一個類

而心臟又在人體當中,正如同是內部類在外部內當中

例項1:內部類的基本結構

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 //外部類 class Out { private int age = 12; //內部類 class In { public void print() { System.out.println(age); } } } public class Demo { public static void main(String[] args) { Out.In in = new Out().new In(); in.print(); //或者採用下種方式訪問 /* Out out = new Out();
Out.In in = out.new In(); in.print(); */ } }

執行結果:12

從上面的例子不難看出,內部類其實嚴重破壞了良好的程式碼結構,但為什麼還要使用內部類呢?

因為內部類可以隨意使用外部類的成員變數(包括私有)而不用生成外部類的物件,這也是內部類的唯一優點

如同心臟可以直接訪問身體的血液,而不是通過醫生來抽血

程式編譯過後會產生兩個.class檔案,分別是Out.class和Out$In.class

其中$代表了上面程式中Out.In中的那個 .

Out.In in = new Out().new In()可以用來生成內部類的物件,這種方法存在兩個小知識點需要注意

  1.開頭的Out是為了標明需要生成的內部類物件在哪個外部類當中

  2.必須先有外部類的物件才能生成內部類的物件,因為內部類的作用就是為了訪問外部類中的成員變數

例項2:內部類中的變數訪問形式

1 2 3 4 5 6 7 8 9 10 11 12

相關推薦

Java 部類特性總結(吐血之作)

內部 不能 今天 了解 基本 靜態 外部類 pro this PS:今天花了整個下午時間看內部類相關的內容,因知識點多而雜,故記之如下。 一、內部類的作用 內部類看起來是一種代碼隱藏機制:將類置於其他類的內部。它還了解外部類,並能與之通信;使用內部類可以實現閉包;內部

java部類使用小結

內部類的宣告與訪問 內部類可以是static的也可以用其它四種訪問修飾符(而外部類只能使用public和 default修飾)。內部類所能實現的功能外部類也同樣可以全部實現,只是使用內部類可以使其更加簡潔高效。 內部類是一個編譯時概念,一旦編譯成功就會變成兩個完全不同

Java部類的定義及使用

一、定義 1.在一個類的內部進行其他類結構的巢狀的操作。 例: class Outer{ private String msg = "Hello World!"; //定義一個內部類 //*********************************

JAVA部類的繼承和覆蓋問題

在JAVA中,由於內部類的構建器必須連線到指向其外圍類物件的引用,所以在繼承內部類的時候會變得很複雜。問題在於指向外圍類物件的祕密引用必須得到初始化,而在匯出類中不再存在可連線的預設物件,我們必須使用

java部類的訪問呼叫

從Java1.1開始引入了內部類以來,它就引起了人們的激烈爭論。其實任何優秀的語言特性用得不好就是濫用,內部類用得不好就會導致程式碼像迷宮一樣,導致出現毫無重用的綜合徵。1、內部類分為成員內部類、靜態巢狀類、方法內部類、匿名內部類。幾種內部類的共性:A、內部類仍然是一個獨立

解決JAVA部類所對應的外部類引用初始化的問題

java內部類的分類 java內部類的分類:成員內部類、區域性內部類、靜態內部類(巢狀類)、匿名內部類。 在構建內部類物件時,需要一個指向其外部類物件的引用,而且這種引用的傳遞是通過內部類的構造器來完成的。 如果編譯器訪問不到這個引用就會報錯。 CASE 1: // 用.n

JAVA部類和匿名部類的區別,分別在什麼時候使用它們?

今天沒事,抽出時間總結了一下很多開發人員都想弄明白的一些JAVA基礎知識(內部類和匿名內部類)。 一、JAVA中內部類和匿名內部類的區別          內部類:內部類可以是static的或者非static的,static內部類只能包含靜態方法和靜態類變數,只能訪問外部類的

Java 部類、靜態部類、列舉類

一、內部類 在另一個類中定義的類 內部類作用 1、內部類提供了更好的封裝。只能讓外部類直接訪問,不允許同一個包中的其他類直接訪問。 2、內部類可以直接訪問外部類的私有屬性,內部類被當成其外部類成員。當外部類不能訪問內部類的內部屬性。 內

java部類的建立四種情況,三種方式,及內部資料訪問許可權

內部類和外部類的關係,及內部靜態類的資料訪問許可權,宣告方式。 第一種,在外部類內部宣告使用內部類,內部類的型別為static和非 static型別,內部類資料型別為private,protected,public 型別的訪問許可權。外部類為非靜態宣告和許可權如下: p

java部類訪問區域性變數為什麼要定義區域性變數為final

因為方法內定義的變數是區域性變數,離開該方法,變數就失去了作用,也就會自動被消除,而內部類卻不會離開它所在方法就失去作用,它有更廣的生命週期,下面通過一個例項加以說明: 如例中所示,在外部類Outer中聲明瞭一個內部類TimerPrint,這個類中的方法引用了方法start

Java部類的記憶體洩露問題

package com.example.temptemp; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.Text

java部類在區域性時,訪問許可權》

/* 內部類定義在區域性時, 1,不可以被成員修飾符修飾 2,可以直接訪問外部類中的成員,因為還持有外部類中的引用。 但是不可以訪問它所在的區域性中的變數。只能訪問被final修飾的區域性變數。 *

Java部類和異常處理

1、 內部類 內部類的訪問規則: 1) 內部類可以訪問外部類的成員包括私有。 之所以可以直接訪問外部類的成員,是因為內部類持有一個外部類的引用 , 格式: 外部類名.this 2) 外部類要訪問內部類,必須建立內部類物件。 當內部類處於外

關於Java部類的一些概念整理

    把一個類放到另一個類的內部定義,這個定義在其他類內部的類就被稱為內部類。     內部類的作用:     (1).內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類。     (2).內部類成員可以直接訪問外部類的私有資料,因為內

java部類和異常類

這是在eclipse中建立的一個Example8_2的類,其中有些錯誤,我想在這裡註明一下。只是想以後自己看看,希望不要在出現這樣的錯誤。 package s8_2; /**  * @author Administrator  *本節主要是講內部類和異常類  */ /

Java部類的騷操作

  10.1 如何定義內部類 如程式碼10.1-1 所示 public class Parcel1 { public class Contents{ private int value = 0;​ public int getValue(){

Java部類和靜態部類的區別

內部類和靜態內部類 示例 public class OuterClass { private int numPrivate = 1; public int numPublic = 2; public static int numPublicStatic = 3; private

java的匿名部類總結

但是 star per 處的 書寫 括號 art log num 匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口 實例1:不使用匿名內部類來實現抽象方法

java 部類總結

內部類不是很好理解,但說白了其實也就是一個類中還包含著另外一個類。 如同一個人是由大腦、肢體、器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟:它也有自己的屬性和行為(血液、跳動)。 顯然,此處不能單方面用屬性或者方法表示一個心臟,而需要一個類。 而心臟又在人體當

java匿名部類總結

匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化程式碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個介面 例項1:不使用匿名內部類來實現抽象方法 abstract class Person { public a