java培訓教程:什麼是匿名內部類?怎樣建立匿名內部類?
本期Java教程要為大家分享的是關於java中的匿名內部類,相信很多同學在學Java技術的時候有了解過,下面我們就來詳細的看一下。
Java培訓教程:什麼是匿名內部類?怎樣建立匿名內部類?匿名內部類是沒有名稱的內部類。在Java中呼叫某個方法時,如果該方法的引數是介面型別,除了可以傳人個介面實現類外,還可以使用實現介面的匿名內部類作為引數,在匿名內部類中直接完成方法的實現。建立匿名內部類的基本語法格式如下:
new父介面( ) {//匿名內部類實現部分
下面透過一個案例學習匿名內部類的定義和使用,如檔案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的執行結果如圖4-23所示。
圖4-23檔案4-23的執行結果
檔案4-23中,第1~3行程式碼建立了Animal介面;
第7~12行程式碼是呼叫animalShout( )方法,將實現Animal介面的匿名內部類作為animalShout( )方法的引數,並在匿名內部類中重寫Animal介面的shout( )方法。
需要注意的是,在檔案4-23中的匿名內部類中訪問了區域性變數name,而區域性變數name並沒有使用final修飾符修飾,程式也沒有報錯。這是JDK8的新增特性,允許在區域性內部類、匿名內部類中訪問非final修飾的區域性變數,而在JDK8之前,區域性變數前必須加final修飾符,否則程式編譯時報錯。
對於初學者而言,可能會覺得匿名內部類的寫法比較難理解,下面分兩步介紹匿名內部類的編寫,具體如下。
在呼叫animalShout()方法時,在方法的引數位置寫上new Animal ( ) {},這相當於建立了一個例項物件,並將物件作為引數傳animalShout( )方法。在new Animal( )後面有一對大括號,表示建立的物件為Animal的子類例項,該子類是匿名的,具體程式碼如下:
animalShout (new Animal () {}) ;
(2)在大括號中編寫匿名子類的實現程式碼,具體如下:
animalShout (new Animal ( ) {public void shoutSustem.out.println (“喵喵.....”);} });
至此便完成了匿名內部類的編寫。匿名內部類是實現介面的種簡便寫法,在程式中不定非要使用匿名內部類。對於初學者而言,不要求完全掌握這種寫法,只需理解語法就可以。
以上就是為大家介紹的“什麼是匿名內部類?怎樣建立匿名內部類?”的java培訓教程。如果大家正在學習java知識或者是對java知識比較感興趣的話,可以關注小千,後期會繼續分享Java知識的。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2838731/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 內部類是什麼?匿名內部類又是什麼?
- Java內部類詳解--匿名內部類Java
- Java類與匿名內部類Java
- 匿名內部類
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- 匿名內部類理解
- 10-Java內部類——成員內部類、區域性內部類、匿名內部類Java
- Java中的匿名內部類及內部類的二三事Java
- java匿名內部類:“ 儂好,世界”Java
- 匿名內部類的使用
- Java_介面回撥與匿名內部類Java
- Java之區域性匿名內部類物件Java物件
- 用匿名內部類實現 Java 同步回撥Java
- 關於java匿名內部類初始化法Java
- 匿名內部類方式實現執行緒的建立執行緒
- java內部類,為什麼需要內部類?Java
- 匿名內部類中關於new Runnable ( )
- scala_繼承、型別判斷、抽象類、匿名內部類繼承型別抽象
- lambda表示式在oj中會比匿名內部類慢
- [短文速讀-3] 內部匿名類使用外部變數為什麼要加final變數
- Java內部類詳解-- 成員內部類Java
- Java內部類Java
- Java 內部類Java
- Lambda對比匿名內部類,Lambda是什麼,Lambda該怎麼用,Lambda使用過程中有什麼需要注意的?
- Java內部類詳解--區域性內部類Java
- 匿名內部類方式構建物件導致序列化失敗物件
- Java基礎內部類4-內部類進階Java
- 10、Java——內部類Java
- 內部類與靜態內部類
- 內部類
- java中的內部類Java
- Java 內部類詳解Java
- Java內部類詳解Java
- Java-InnerClass內部類Java
- 淺談java內部類Java
- Java 的抽象類, 介面以及內部類Java抽象
- Java 內部類使用詳解Java
- Java 內部類與閉包Java