簡單地說:匿名內部類就是沒有名字的內部類。什麼情況下需要使用匿名內部類?如果滿足下面的一些條件,使用匿名內部類是比較合適的:
·只用到類的乙個例項。
·類在定義後馬上用到。
·類非常小(sun推薦是在4行**以下)
·給類命名並不會導致你的**更容易被理解。
在使用匿名內部類時,要記住以下幾個原則:
·匿名內部類不能有構造方法。
·匿名內部類不能定義任何靜態成員、方法和類。
·匿名內部類不能是public,protected,private,static。
·只能建立匿名內部類的乙個例項。
·乙個匿名內部類一定是在new的後面,用其隱含實現乙個介面或實現乙個類。
·因匿名內部類為區域性內部類,所以區域性內部類的所有限制都對其生效。
下面的例子看起來有點奇怪:
//在方法中返回乙個匿名內部類
public class parcel6
}. // 在這裡需要乙個分號
} public static void main(string args)
} cont()方法將下面兩個動作合併在一起:返回值的生成,與表示這個返回值的類的定義!進一步說,這個類是匿名的,它沒有名字。更糟的是,看起來是你正要建立乙個contents物件:
return new contents()
但是,在到達語句結束的分號之前,你卻說:「等一等,我想在這裡插入乙個類的定義」:
return new contents()
}. 這種奇怪的語法指的是:「建立乙個繼承自contents的匿名類的物件。」通過new 表示式返回的引用被自動向上轉型為對contents的引用。匿名內部類的語法是下面例子的簡略形式:
class mycontents implements contents
} return new mycontents().
在這個匿名內部類中,使用了預設的構造器來生成contents。下面的**展示的是,如果你的基類需要乙個有引數的構造器,應該怎麼辦:
public class parcel7
}. // semicolon required
} public static void main(string args)
}
內部類,匿名內部類
內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 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...