1 內(nèi)部類
1.1 內(nèi)部類概述
內(nèi)部類: 就是在一個(gè)類中定義一個(gè)類。舉例: 在一個(gè)類A的內(nèi)部定義一個(gè)類B,類B就被稱為內(nèi)部類
- 內(nèi)部類的定義格式
public class 類名 { 修飾符 class 類名 {}}
- 范例:
public class outer { public class Inner {}}
- 內(nèi)部類的訪問(wèn)特點(diǎn)
內(nèi)部類可以直接訪問(wèn)外部類的成員,包括私有
- 外部類要訪問(wèn)內(nèi)部類的成員,必須創(chuàng)建對(duì)象
1.2 成員內(nèi)部類
- 按照內(nèi)部類在類中定義的位置不同,可以分為如下兩種形式
- 在類的成員位置:成員內(nèi)部類
- 在類的局部位置:局部?jī)?nèi)部類
- 成員內(nèi)部類,外界如何創(chuàng)建對(duì)象使用呢?
- 格式: 外部類名.內(nèi)部類名 對(duì)象名 = 外部類對(duì)象.內(nèi)部類對(duì)象;
- 范例: Outer.Inner oi = new Outer().new Inner();
1.3 局部?jī)?nèi)部類
局部?jī)?nèi)部類是在方法中定義的類,所以外界是無(wú)法直接使用,需要在方法內(nèi)部創(chuàng)建對(duì)象并使用
該類可以直接訪問(wèn)外部類的成員,也可以訪問(wèn)方法內(nèi)的局部變量
1.4 匿名內(nèi)部類
前提: 存在一個(gè)類或者接口,這里的類可以是具體類也可以是抽象類
- 格式:
new 類名或者接口名 { 重寫(xiě)方法;};
- 范例:
new Inter() { public void show() {}}
==本質(zhì): 是一個(gè)繼承了該類或者實(shí)現(xiàn)了該接口的子類匿名對(duì)象==