昨天晚上聽到潘老師解答邢彥年學長的問題,聽了半天也是雲裏霧裏,畢竟身爲一個「假的」計算機專業的學生,我什麼都不知道,什麼匿名類,匿名函數......這些我都沒印象了,我只記得那位教面向對象程序設計的老師一節課能講60多頁,六頁的知識用兩句話就能講完,如今既然接觸到了這個東西就得學明白了。java
new <父類或者接口名> (<參數列表>) { 成員定義} ;
interface hello { String start(); } public class OK { public String hello() { hello sentence =new hello() //這個地方就是匿名類 { String start() { return "hello world"; } } return sentence; } }
經過代碼看出,實際上hello是一個接口,自己接口是不能直接new的,可是呢在new的時候,hello這個接口後面帶了一對花括號,那麼這個就表示實際上如今new的是這個接口的實現類。可是發現,這個實現類是沒有名字的,因此這個實現類叫匿名類。多線程
class Add { public int add(int a, int b) { return a + b; }; } class Demo { int c = 6; Add add = new Add() //匿名類 { public int add(int a, int b) { return super.add(2,3) + c; } }; }
這裏的匿名類用到了類外的變量c,上文中的變量能夠在匿名類中使用。那麼上面的問題也就解決了,上面的類傳入了參數klass,那麼匿名類就能夠直接使用該參數。ide
這篇博客寫了很久,一開始一點都看不懂,面對許多專業名詞,我真的是一臉懵,是真的一臉懵,後來問了問學長,總算是理解了那麼一點,但願此次的學習能給之後帶來許多便利吧。函數
感謝這些文章的做者的分享
java匿名類的定義
匿名類
Java之匿名內部類詳解學習