1. 程式人生 > >內部類與匿名類

內部類與匿名類

內部類顧名思義就是一個類內的類。是為了方便而被建立的,內部類可以呼叫外部類的方法屬性,而外部類想要呼叫內部類需要先例項化物件然後通過物件進行呼叫。
內部類分兩種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 …
}
});