1樓:Unavailable
匿名內部類【重點】
匿名內部類 :是內部類的簡化寫法。它的本質是乙個帶具體實現的父類或者父介面的匿名的子類物件。
開發中,最常用到的內部類就是匿名內部類了。以介面舉例,當你使用乙個介面時,似乎得做如下幾步操作,
1. 定義子類
2. 重寫介面中的方法
3. 建立子類物件
4. 呼叫重寫後的方法
我們的目的,最終只是為了呼叫方法,那麼能不能簡化一下,把以上四步合成一步呢?匿名內部類就是做這樣的快
捷方式。
前提匿名內部類必須繼承乙個父類或者實現乙個父介面。
格式使用方式
public static void main(String args) {
// 建立外部類物件
Person p = new Person();
// 建立內部類物件
Heart heart = p.new Heart();
// 呼叫內部類方法
heart.jump();
// 呼叫外部類方法
p.setLive(false);
// 呼叫內部類方法
heart.jump();
輸出結果:
心臟在跳動
心臟不跳了
new 父類名或者介面名(){
// 方法重寫
@Override
public void method() {
2樓:路人
匿名內部類是一種特殊的區域性內部類,它是通過匿名類實現介面。
匿名內部類的特點:
1,乙個類用於繼承其他類或是實現介面,並不需要增加額外的方法,只是對繼承方法的事先或是覆蓋。
2,只是為了獲得乙個物件例項,不需要知道其實際型別。
3,類名沒有意義,也就是不需要使用到。
3樓:klein LL
這個類有乙個protected方法test,如果你在其他包下想呼叫這個protected方法是不行的,可以發現沒有提示test方法
這時候你可以使用匿名類繼承這個類,定義乙個方法callParentTest(),在這個方法體內呼叫super.test(),最後呼叫這個callParentTest()即可。
在spring-boot中的HttpMessageConverts裡也有用到這種方法
,但是定義為protected方法,所以使用匿名類來呼叫
Java 中引入內部類的意義?
自己平時在使用內部類一些總結 1,從職責劃分角度考慮 在某些場景更適合外部類和內部類之間的協作關係。內部類是作為輔助類,外部類看成主類,輔助類輔助主類。他們物件生存情景像宿主和寄生蟲的關係,輔助類能夠感知到主類存在,最典型的表現就是可以訪問到主類的this引用,有點像閉包。2,從多繼承角度考慮 內部...
為什麼Java內部類要設計成靜態和非靜態兩種?
王二 除了邏輯和可讀性上的需求之外。也實現了單例模式下對資源的優化。比如 Math 裡的 RandomNumberGeneratorHolder 就是靜態內部類。 BWH.Steven 我們所知道static是不能用來修飾類的,但是成員內部類可以看做外部類中的乙個成員,所以可以用static修飾,這...
JavaScript中如何移除匿名的事件處理函式?
dom的事件機制是訂閱 觀察,所以移除事件的時候需要提供事件名,也就是繫結的時候觸發的函式名。要是匿名函式的話,沒有名字,也就無法移除正常。但是有很多hack的方法,比如直接改寫element物件原型上的addEventListener,removeEventListner方法等等。乙個簡單粗暴的方...