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