第八章 內部類

2021-08-30 16:58:24 字數 1923 閱讀 1877

1.

內部類

(1)「

常規」內部類在另乙個類的波形括號內宣告,

但位於任何方法或其它**塊之外

(2)內部類是封裝類(

外部類)

乙個完整的成員,

因此,它能夠使用訪問修飾符標識,

也能使用abstract

或final

修飾符標識(

但二者不能同時使用,abstract

一定要子類化,

而final

不能被子類化)

(3)內部類例項與封裝類例項共享一種特殊關係。這種關係為內部類提供對外部類所有成員的訪問,

包括那些標識為private

的成員

(4)為了例項化乙個內部類,

必須有乙個對外部類例項的引用

(5)封裝類內的**只能通過內部類名稱例項化內部類:myinner mi = new myinner();

(6)位於封裝類的實力方法之外的**,

只能通過使用內部類名稱和外部類名稱,

以及對外部類的引用來例項化內部類,

如:myouter mo=new myouter(); myouter.myinner  inner = mo.new myinner();

(7)在內部類的**中,

關鍵字this

擁有對該內部類例項的引用。為了引用外部this(

也就是與這個內部類例項相關的外部類例項),

應該在關鍵字this

之前加上外部類名稱,

如:myouter.this; 2.

區域性方法內部類

(1)區域性方法內部類在封裝類的方法內定義

(2)為了使用內部類,

必須它對例項化,

該例項化必須發生在同乙個方法內,

但位於該類的定義**之後

(3)區域性方法內部類不能使用在該方法(

含引數)

內宣告的變數,

除非變數被標識為final

(4)能夠應用於區域性方法內部類的修飾符只有abstract

和final(

不能同時用) 3.

匿名內部類

(1)匿名內部類沒有名稱,

它的型別必須是乙個命名型別的子類,

或是命名介面的實現器

(2)匿名內部類總是作為一條語句的一部分建立的,

因此不要忘記在該類定義之後用波形括號結束該語句。

(3)由於多型性,

在匿名內部類引用上能夠呼叫的方法只有那些被定義在引用變數類/

介面中的方法,

即使該匿名類確實是引用變數型別的子類/

實現器

(4)匿名內部類能夠擴充套件乙個子類或實現乙個介面。與非匿名類(

內部類或其它類)

不同,匿名內部類不能同時做這兩件事。即:它不能同時擴充套件乙個類和實現乙個介面,

也不能實現多個介面

(5)變元內宣告的內部類作為方法呼叫的一部分被宣告、定義並自動例項化。重點:該類定義在方法變元內,

故將用波形括號結束類定義,

後跟乙個用於結束方法呼叫的右圓括號,

再跟乙個用於結束語句的分號。--

》}); 4.

靜態巢狀類

(1)靜態巢狀類是用static

修飾符標識的內部類

(2)靜態巢狀類不是內部類(

除非用static

修飾符標識),

它是乙個頂級巢狀類

(3)由於巢狀類是靜態的,

故它不與外部類例項共享任何特殊關係

(4)例項化靜態巢狀類需要使用外部類名稱和巢狀類名稱,

如:bigouter.nested  n  =  new  bigouter.nested();

(5)靜態巢狀類不能訪問外部類的非靜態成員,

因為它沒有對外部例項的隱含引用(

即:巢狀類例項沒有得到外部this

引用)

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...

第八章 字典

d 空字典 d 這就是字典 d dict.fromkeys a b d dict zip keyslist,valslist d dict name bob age 22 建立字典的函式 d name 通過索引key獲取對應的value d.keys 返回d字典物件所有key,返回乙個列表 d.va...