匿名內部類

2021-10-17 18:57:14 字數 2028 閱讀 7785

1.引入定義測試類,定義介面

public

class

addabledemo

}inte***ce

addable

1.1現在我們要呼叫介面中的方法應該怎麼辦呢?

定義乙個addable的實現類,例項化,然後呼叫。

public

class

addabledemo

}inte***ce

addable

//正常情況

class

caddable

implements

addable

}

1.2我們知道我們肯定能找到addable的實現類,例項化,然後呼叫add();方法,既然肯定能找到這個實現類,那麼能不能將其省略呢?這就是匿名內部類。我們來改進一下這個**。

public

class

addabledemo})

; system.out.

println

(sum);}

//改進1.定義了乙個方法引數為介面型別的變數

public

static

intuseaddable

(addable a)

}inte***ce

addable

}

1.3我們來看一下改進方法裡面這個引數,裡面重寫了add方法,前面有個new關鍵字,那我們就知道了介面沒有構造方法不能new物件,有重寫還有new所有這個一定是介面的實現類的物件

那麼改進1處的引數若有引數傳過來則是 addable a=子類物件

這是啥這就是多型

1.4再**

既然是多型,那我們把1.1中的物件傳入useaddable(addable a)那應該也是可以的咯。

public

class

addabledemo

public

static

intuseaddable

(addable a)

}inte***ce

addable

//正常情況

class

caddable

implements

addable

}

執行結果 --這是正兒八經的多型這裡的cc 就相當於匿名類物件中的乙個,重寫方法的邏輯也是對應著的可以對應前三個實驗**看看幫助理解。

6

process finished with exit code 0

2.我們看到下面這個地方emmm是不是看著很難受能不能再改進一下----接下來使用lambda表示式來改進一下。

int sum=

useaddable

(new

addable()

});

2.1但是lambda的使用是有

前提

int sum=

useaddable((

int x,

int y)

->

);

你覺的咋樣----是不是簡潔了很多?

2.3那還能不能再簡化一下呢?

lambda表示式省略的規則

public

class

addabledemo

public

static

intuseaddable

(addable a)

}inte***ce

addable

執行結果 對著的

6

process finished with exit code 0

內部類,匿名內部類

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

內部類 匿名內部類

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

內部類 匿名內部類

package org.lgy.study.innerclass public class anonymoustest public static void main string args public string getname public double getprice inte ce p...