匿名內部類的用法

2021-08-15 10:14:20 字數 1083 閱讀 9271

很早就知道匿名內部類,但沒去**,後面也沒用到,索性算個知識盲點,今天順便研究下。匿名內部類,顧名思義,沒有名字的內部類。

存在即合理,那匿名內部類的使用場景是什麼呢,如果實現父類(或繼承介面的)實現類只在業務中被呼叫一次,也即只使用一次,那麼它的存在就是有點尷尬的,只為了一部分的要求而單獨寫個類這在工程上也不合理,那麼此刻,為了解決這種尷尬,匿名內部類就被引入了。看個例子,加深理解吧。

使用匿名內部類之前:

//抽象父類

public

abstract

class

animal

//繼承類

public

class

dogextends

animal

} //繼承類的使用

public

class

demo

}

使用匿名內部類:

//抽象類

public

abstract

class animal

//匿名內部類使用

public

class demo

};p.eat();

}}

使用時需要注意幾點:

1.必須繼承乙個抽象類或實現乙個介面,並且僅只能繼承乙個抽象類或實現乙個介面。

2. 匿名內部類不是抽象的,所以需要實現介面或抽象類所有的抽象方法。

3. 不存在靜態成員變數、靜態方法、建構函式。

那麼不存在建構函式,匿名內部類怎麼傳參呢?外面的引數是可以直接傳進來的,匿名內部類是可以讀取的,但是匿名內部類裡對引數的改變並不會影響外部引數的改變,所以為了引數一致性,編譯器要求傳參定義為final型別。舉個例子吧,還是剛才的**,修改一下,如下:

public

class demo

public

void

display(final string food)

};p.eat();

}}

有名內部類和匿名內部類的用法

1 分類 有名內部類分為靜態的和非靜態的 2 用法 public class test 有名靜態內部類 static class tt public static void main string args 1 定義 沒有名字的類,不能單獨存在 2 用法 一定和創造物件一起存在 建立方法 new 父...

內部類,匿名內部類

內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 outer.this.x 外部類訪問內部類成員,需要宣告內部類的物件。其他類訪問內部類方法 當內部類處在成員變數的位置時,就...

內部類 匿名內部類

把類定義在其他類的內部,這個類就叫內部類。內部類分為 成員內部類 區域性內部類。內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有。外部類訪問內部類的成員,必須建立物件。區域性內部類是定義在乙個方法或者乙個作用域裡面的類。public class outer 在區域性位置建立內部類物件,調內部...