內部類,Lambda表示式的介紹

2021-10-10 21:27:57 字數 3178 閱讀 7377

什麼是內部類

在乙個類中定義乙個類

舉例:在乙個類a的內部定義乙個類b,類b就被稱為內部類

class

a}

如何定義以個內部類

class 外部類名

}

內部類的分類

外部如何使用普通成員內部類

格式: 外部類名.內部類名 物件名 = new 外部物件().new 內部物件();

範例:outer.inner oi = new outer().new inter();

public

class

outerclass_and_innerclass

}// 外部類

class

outer

}}

成員內部類的訪問非靜態成員時有什麼特點

1.內部類可以直接訪問外部類的成員,包括私有

2.外部類要訪問內部類的成員,必須要建立物件

普通成員內部類

私有成員內部類

靜態成員內部類

私有成員內部類的訪問特點?

只能在自己所在的外部類中建立物件訪問

如何建立靜態成員內部類物件?

外部類名.內部類名 物件名 = new 外部類名.內部類名();

如何訪問靜態成員內部類中的靜態方法

外部類名.內部類名.方法名();

/*      

1. 內部類可以直接訪問外部類的成員,包括私有

2. 外部類要訪問內部類的成員,必須建立物件

*/// 外部類

public

class

innerclass

}// 外部類

class

outerinner

}public

void

show()

}

什麼是區域性內部類

在方法內部定義的類

如何使用區域性內部類

區域性內部類外界無法使用,需要在方法內部建立物件並使用

區域性內部類有什麼特點

區域性內部類是在方法中定義的類

該類可以直接訪問外部類的成員,也可以訪問方法內的區域性變數

什麼是匿名內部類

沒有顯式的名字的內部類

使用匿名內部類的前提

存在乙個類或者介面,這裡的類可以是具體類也可以是抽象類

如何使用匿名內部類示例

package myclass;

public

class

classdemo};

// 呼叫方法

o.show()

;// 將繼承或實現,方法重寫,建立物件,呼叫方法,放在了一步進行

newout()

}.show()

;}}//定義乙個抽象類,只有乙個show方法

abstract

class

out

匿名內部類的本質是什麼

是乙個繼承了該類,或者實現了該介面的子類匿名物件

匿名內部類的使用場景

當發現某個方法需要介面或者抽象類的子類物件,我們就可以傳遞乙個匿名內部類過去,來簡化傳統物件

函式式思想盡量忽略物件導向的複雜語法: 「強調做什麼,而不是以什麼形式去做」

物件導向思想強調"必須通過物件的形式來做事情"

函式式思想則盡量忽略物件導向的複雜語法:「強調做什麼,而不是以什麼形式去做」

有乙個介面,介面中只能由乙個抽象方法

格式

(形式引數)->

組成lambda表示式的三要素

形式引數:如果由多個引數,引數之間用逗號隔開;如果沒有引數,留空即可

->:由英文中畫線和大於符號組成,固定寫法.代表指向動作

**塊:是我們具體要做的事情,也就是以前我們寫的方法體內容

無參無返回值

()->system.out.println("我是lambda中的show方法")

有參無返回值

msg->system.out.println("我是lambda表示式"+msg)

無引數有返回值

()-

>

帶引數有返回值

// 示例一

(int a,

int b)

->

// 示例二

(a,b)

->

lambda表示式的省略規則 示例

package myclass;

public

class

lambdademo);

}public

static

void

getshow

(out2 out2)

}//定義乙個介面類,只有乙個show方法

inte***ce

out2

匿名內部類:可以是介面,也可以是抽象類,還可以是具體類

lambda表示式:只能是介面

如果介面中有且僅有乙個抽象方法,可以使用lambda表示式,也可以使用匿名內部類

如果介面中多餘乙個抽象方法,只能使用匿名內部類,而不能使用lambda表示式

匿名內部類:編譯之後產生乙個單獨的.class位元組碼檔案

lambda表示式:編譯之後,沒有乙個單獨的.class位元組碼檔案.對應的位元組碼會在執行時候動態生成

內部類,Lambda表示式

內部類定義格式 內部類的訪問特點 示例 內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有 外部類要訪問內部類的成員,必須建立物件 public class outer public void method 外界建立成員內部類格式 私有成員內部類 靜態成員內部類 區域性內部類方式方式 示例 c...

內部類,lambda表示式

在乙個類中定義乙個類.分類 成員內部類 在類的成員位置 區域性內部類 在類的區域性位置 例子 成員內部類 public class test1inner class outer 成員內部類 概述 定義在類中方法之外的內部類.私有成員內部類訪問 private 在自己所在的外部類中建立物件訪問.sta...

匿名內部類與Lambda表示式

1.特徵上 沒有名字 2.實現上 既可以擴充套件類,也可以實現介面,但是不能兩者兼備 3.限制上 如果實現介面,只能實現乙個介面 4.功能上 簡化 符合優先使用類而不是介面的設計思想 舉例 description service介面 inte ce service description servi...