匿名內部類 和繼承的關係

當我們實現一個抽象方法時。傳統的做法就是創建一個子類去繼承抽象類或者實現接口 然後實現裏面的抽象方法 ,而匿名內部類大大簡化了着一個步驟!


關於匿名內部類:


傳統做法 :如過定義了一個接口A1 我們知道接口A1裏面的方法是抽象的,那麼實現A1的傳統的方法就是
找一個B類去實現這個A1接口裏面的抽象方法!看代碼


public class NoInnerClassDemo2 {
public static void main(String[] args) {
new X1().fun1();//實例化X類對象並調用fun1()方法
}


}
interface A1{  //定義接口A1
public void printlnfo();  //定義一個接口的抽象方法
}
class B implements A{   //讓B 去實現接口A1的抽象方法
public void printlnfo(){
System.out.prinltn("Hello World");
}
}
class X1{//定義X1類
public void fun1(){   //定義fun1()方法
this.fun2(new B());
}
public void fun2(A1 a){  //接受接口的實例
a.printlnfo();    //調用接口方法
}
}


//假如這個接口的實現類B類只是用了一次 那麼我們就沒必要再單獨用了,這個時候就要用到匿名內部類來完成了,看下面的代碼


public class NoInnerClassDemo2 {


public static void main(String[] args) {

new X1().fun1();//實例化X1類對象並調用fun1()方法

/* X x = new X();
x.fun1();*/
}


}
interface A1{    //定義接口A1
public void printlnfo();    //定義一個接口的抽象方法
}
class X1{    //定義X類
public void fun1(){    //定義fun1()方法
this.fun2(new A1(){    //匿名內部類
public void printlnfo(){   //實現接口中的抽象方法
System.out.println("匿名的實現方法啊");
}
});
}
public void fun2(A1 a){//接受接口的實例
a.printlnfo();//調用接口方法
}
}


//總結: 匿名內部類 其實比你用單獨一個類 去實現接口 或 繼承抽象類 裏面的抽象方法方便很多!還要注意 這裏面綜合了 什麼是實例化?
就是你需要用到哪個類就new那個類,然後用new出來的 對象名.方法名()來調用裏面的方法! 而且本題中用的實例化呢
是根據匿名對象調用的 如主類中 new X1().fun1();//實例化X1類對象並調用fun1()方法(根據匿名對象直接調用方法)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章