本期java教程要為大家分享的是關(guān)于java中的匿名內(nèi)部類,相信很多同學在學java技術(shù)的時候有了解過,下面我們就來詳細的看一下。
java培訓教程:什么是匿名內(nèi)部類?怎樣創(chuàng)建匿名內(nèi)部類?匿名內(nèi)部類是沒有名稱的內(nèi)部類。在Java中調(diào)用某個方法時,如果該方法的參數(shù)是接口類型,除了可以傳人個接口實現(xiàn)類外,還可以使用實現(xiàn)接口的匿名內(nèi)部類作為參數(shù),在匿名內(nèi)部類中直接完成方法的實現(xiàn)。創(chuàng)建匿名內(nèi)部類的基本語法格式如下:
new父接口( ) {//匿名內(nèi)部類實現(xiàn)部分
下面通過一個案例學習匿名內(nèi)部類的定義和使用,如文件4-23所示。
interface Animal {
roid shout ();
public class Example23{
public static void main (String[] args) {
String name = “小花”;
animalShout (new Animal (){
@Override
public void shout() {
System.out.println (name+"喵喵.......") ;
}) ;
public static void animalShout (Animal an) {
an.shout );
}
}
文件4-23的運行結(jié)果如圖4-23所示。
圖4-23文件4-23的運行結(jié)果
文件4-23中,第1~3行代碼創(chuàng)建了Animal接口;
第7~12行代碼是調(diào)用animalShout( )方法,將實現(xiàn)Animal接口的匿名內(nèi)部類作為animalShout( )方法的參數(shù),并在匿名內(nèi)部類中重寫Animal接口的shout( )方法。
需要注意的是,在文件4-23中的匿名內(nèi)部類中訪問了局部變量name,而局部變量name并沒有使用final修飾符修飾,程序也沒有報錯。這是JDK8的新增特性,允許在局部內(nèi)部類、匿名內(nèi)部類中訪問非final修飾的局部變量,而在JDK8之前,局部變量前必須加final修飾符,否則程序編譯時報錯。
對于初學者而言,可能會覺得匿名內(nèi)部類的寫法比較難理解,下面分兩步介紹匿名內(nèi)部類的編寫,具體如下。
在調(diào)用animalShout()方法時,在方法的參數(shù)位置寫上new Animal ( ) {},這相當于創(chuàng)建了一個實例對象,并將對象作為參數(shù)傳animalShout( )方法。在new Animal( )后面有一對大括號,表示創(chuàng)建的對象為Animal的子類實例,該子類是匿名的,具體代碼如下:
animalShout (new Animal () {}) ;
(2)在大括號中編寫匿名子類的實現(xiàn)代碼,具體如下:
animalShout (new Animal ( ) {public void shoutSustem.out.println (“喵喵.....”);} });
至此便完成了匿名內(nèi)部類的編寫。匿名內(nèi)部類是實現(xiàn)接口的種簡便寫法,在程序中不定非要使用匿名內(nèi)部類。對于初學者而言,不要求完全掌握這種寫法,只需理解語法就可以。
以上就是為大家介紹的“什么是匿名內(nèi)部類?怎樣創(chuàng)建匿名內(nèi)部類?”的java培訓教程,如果大家正在學習java知識或者是對java知識比較感興趣的話,都可以添加我們的官方qq群-811099962,不僅可以獲得java學習資料,并且群內(nèi)還有專業(yè)的java老師定期為大家解決學習所遇到的問題,想要學習的小伙伴,不要錯過。