內部類之 連線到外部類

2021-08-20 06:45:07 字數 1204 閱讀 2023

我前一篇部落格開始,內部類似乎還只是一種名字隱藏和組織**的模式。這是是很有用,但還不是最引人注目的,它還有其它的用途。當生成乙個內部類的物件時,此物件與製造它的外圍物件之間就有了一種聯絡,所以它能訪問其外圍物件的所有成員,而不需要任何特殊的操作。此外,內部類還擁有其外圍類的所有元素的訪問權。

inte***ce selector

public

class

sequence

public

void

add(object x)

private

class

sequenceselector

implements

selector

@override

public object current()

@override

public

void

next()

}public selector selector()

public

static

void

main(string args)

}}

sequence類只是乙個固定大小的object的陣列,以類的形式包裝了起來。可以呼叫add()在序列末增加新的object(只要還有空間)。要獲取sequence中的每乙個物件,可以使用selector介面。這是「迭代器」設計模式的乙個例子。selector允許你檢查序列是否已經到了末尾了(end()),訪問當前物件(current()),以及移到序列的下乙個物件(next())。因為selector是乙個介面,所以別的可以按它們自己的方式來實現這個介面,並且別的方法能以此介面為引數,來生成更加通用的**。
所有內部類自動擁有對其外圍類所有成員的訪問權,這是如何做到的呢?當某個外圍類的物件建立了乙個內部類物件時,此內部類物件必會秘密地捕獲乙個指向那個外圍類的物件的引用。然後,在你訪問此外圍類的成員時,就是那個引用來選擇外圍類的成員。幸運的是,編譯器會幫你處理所有的細節,但是你現在可以看到,內部類的物件只能在與其外圍類的物件相關聯的情況下才能被建立(就像你看到的那樣,內部類是非static類時)。構造內部類物件是,需要乙個指向其外圍類物件的引用,如果編譯器訪問不到這個引用就會報錯。不過絕大多數時候都無需程式設計師操心。

內部類與外部類

在乙個類體之內在定義乙個類 該情況下外面的類稱為 外部類 裡面類稱為 內部類 內部類內部類可以很方便訪問外部類的私有成員屬性,外部類可以通過內部類物件來訪問內部類的私有成員屬性。內部類物件例項化語法格式 外部類.內部類 物件名 new 外部類物件.new內部類構造方法 分為靜態內部類和非靜態內部類 ...

從頭認識java 8 2 鏈結到外部類

這一章節我們來討論一下內部類鏈結到外部類的幾個方面。package com.ray.ch08 public class test public void run class destination private void say private class content 上面的例子充分展現了內部...

靜態內部類與外部類

1 外部類可以通過建立靜態內部類例項的方法來呼叫靜態內部類的非靜態屬性和方法 2 外部類可以直接通過 外部類.內部類.屬性 方法 的方式直接呼叫靜態內部類中的靜態屬性和方法 靜態內部類如果要訪問外部的成員變數或者成員方法,那麼必須是靜態的 1 靜態內部類可以直接呼叫外部類的靜態屬性和方法 2 靜態內...