day04 內部類 Lambda表示式

2021-10-19 05:11:10 字數 2397 閱讀 4808

在乙個類的內部還可以定義類,叫做【內部類】,根據在類中的位置不同分為成員內部類、區域性內部類、和匿名內部類。

在outer內部定義inner成員內部類

public

class

outer

}}

建立outer內部的inner類的物件

public

class

demo6

}

區域性內部類是定義在方法中的內部類,它只在方法中有效,侷限性太強,不推薦使用。

public

class

outer

} inner in=

newinner()

; in.

show()

;}}

匿名內部類其實是乙個抽象類或者介面的子類物件。

匿名內部類的使用前提

1.需要有乙個抽象類\介面

2.格式:

new 抽象類\介面(

)3.本質:匿名內部類是抽象類或者介面的子類物件

//引數animal是抽象類

public

static

void

feed

(animal a)

public

static

void

main

(string[

] args)})

;}

//返回值是animal型別,但是實際返回的是animal的子類物件

public

static animal createanimal()

};}

lambda表示式是jdk8之後才有的新特性,它可以簡化匿名內部類的**書寫。

lmabda表示式的使用前提:

必須要有乙個函式式介面,介面中只允許有乙個抽象方法的介面。

//定義函式式介面,@functionalinte***ce進行標識

@functionalinte***ce

public

inte***ce

animal

一般會把函式式介面方法的形式引數,呼叫方法時就可以傳遞lambda表示式

//把函式式介面作為方法的引數

public

static

void

method

(animal a)

public

static

void

main

(string[

] args)})

;//jdk8之後,可以使用lambda表示式對匿名內部類簡化書寫

method((

)->);

}

1.標準格式

(引數型別1 引數名1

,引數型別2 引數名2)-

>

2.簡化格式

//省略引數的資料型別

(引數名1

,引數名2)-

>

//語句體只有一條的情況,省略{},return和最後的;

(引數名1

,引數名2)-

>語句體

//如果引數只有乙個,()可以省略

引數名-

>語句體

@functionalinte***ce

public

inte***ce

operation

@functionalinte***ce

public

inte***ce

message

public

class

demo10);

//省略資料型別

method

((a, b)

->);

//如果lambda表示式的語句體只有一條語句,{}可以省略

method

((a, b)

-> a + b)

;//引數只有乙個,省略()、資料型別、以及{}

method

(s -

> system.out.

println

(s));}

public

static

void

method

(operation op)

public

static

void

method

(message m)

}

day04 資料寬度

第4節 資料寬度 資料寬度 在上節課了解0和1的關係,同時計算機儲存資料,不是無限制可以儲存任意資料的,在我們現實中只儲存乙個數字的話,要麼把數字寫到本子上或記錄到腦子裡,那麼把它看成無限大的,但是在計算機中不是這樣的由於計算機受到硬體的約束,我們在儲存資料的時候它是有長度限制的。我們稱這個長度的限...

Day04 迴圈結構

如果在程式中我們需要重複的執行某條或某些指令,例如用程式控制機械人踢足球,如果機械人持球而且還沒有進入射門範圍,那麼我們就要一直發出讓機械人向球門方向奔跑的指令。當然你可能已經注意到了,剛才的描述中其實不僅僅有需要重複的動作,還有我們上乙個章節講到的分支結構。再舉乙個簡單的例子,比如在我們的程式中要...

遊戲開發Day04

1.建立球體物件,給球體新增剛體,材質,然後新增到預製體中。2.在相機的射擊指令碼中重寫重寫update方法 public transform newobject void update 3.銷毀子彈物件 在子彈的預製體中新增指令碼 void rotate 向右旋轉 if input.getkey ...