內部類與匿名類
阿新 • • 發佈:2018-12-21
內部類顧名思義就是一個類內的類。是為了方便而被建立的,內部類可以呼叫外部類的方法屬性,而外部類想要呼叫內部類需要先例項化物件然後通過物件進行呼叫。
內部類分兩種1.成員內部類2.區域性內部類
匿名類也是為了方便而產生的在安卓開發中很常見,先看一個例子:
class A{} public class TestDemo { public static void function(A a){ System.out.println("輸入類為:"+a.getClass().getName()); } public static void main(String[] args) { function(new A()); //輸入類為:A function(new A(){}); //輸入類為:TestDemo$1 function(new A(){{}}); //輸入類為:TestDemo$2 function(new A(){{}}); //輸入類為:TestDemo$3 function(new A(){{}{}});//輸入類為:TestDemo$4 } }
很顯然根據輸出我們知道這些類並不是同一個類,新產生的類都是A類的子類。以function(new A(){{}});為例意思為
function(new A(){
{
/*函式靜態塊*/
}
/*匿名類的一些方法*/
});
知道了這些下來就該瞭解怎麼用了~
一般來說內部類是對抽象類的繼承,而且重寫了抽象類的一些方法。
class A{
public abstract doSomeThing();
}
function(new A(){
@override
public abstract doSomeThing(){
//do something …
}
});