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...