匿名內(nèi)部類
/**
* 測試匿名內(nèi)部類
*/
public interface Running{
? ?//定義一個接口
? ?void run();
? ?//接口默認public abstract
}
class Outer3{
? ?public void go(Running r){
????? ?//這里只是調(diào)用public接口并不是實現(xiàn)接口
????? ?//接口引用變量r 不是new接口 接口不可以new
????? ?//形參r對應(yīng)的實參是接口的實現(xiàn)類的對象
? ? ? ?r.run();
? ?}
? ?public static void main(String[] args) {
? ? ? ?Outer3 o3 = new Outer3();
? ? ? ?o3.go(new Running(){
? ? ? ? ? ?//這里是new了一個接口Running的實現(xiàn)類(沒有名字) 即匿名內(nèi)部類
? ? ? ? ? ?// 這么new是因為只想在這里使用一次 后續(xù)不再調(diào)用 所以不需要單獨創(chuàng)建實現(xiàn)類再調(diào)用進來
? ? ? ? ? ?//new ()是類的構(gòu)造方法 ()后的{}是類的類體 內(nèi)部和普通的類寫法一樣
? ? ? ? ? ?public void run(){
? ? ? ? ? ? ? ?//重寫實現(xiàn)run()方法
? ? ? ? ? ? ? ?//接口方法是public 實現(xiàn)方法要加public
? ? ? ? ? ? ? ?System.out.println("匿名內(nèi)部類沒有名字,后續(xù)也不會再被調(diào)用,這里用完即丟掉");
? ? ? ? ? ?}
? ? ? ? ? ?//只需要實現(xiàn)接口的抽象方法 類就可以創(chuàng)建了
? ? ? ?});
? ? ? ?//構(gòu)造方法及類體包裹在o3.go方法的()中
? ?}
}