inte***ce inter
class outer */}
public void print() .show();}*/
}}
格式: new 要繼承的類或者要實現的的介面()就相當於實現了介面,也就相當於建立了inner物件,所以可以直接呼叫show方法。上面不是測試了(new inner().show() 和 上面格式呼叫show方法輸出是一模一樣).
new inter()
}
2.上面複製的整個**這一塊就相當於inter的子類物件,也就是相當於這樣inner in = new inner();
3. 為什麼寫這個匿名內部類呢?因為你看outer類裡面有乙個類可以實現inter介面(也就是inter的子類),然後可以重寫介面裡面的抽象方法,然後經過建立物件呼叫show方法. 但是如果我們沒有inner這個類,又怎麼呼叫介面裡面的抽象方法呢!!!這就用到了上面老師講的兩個相當於
public class not_name_class_inte***ce01
}inte***ce inter
class outer
public void show2() }*/
public void print()
public void show2()
}.show1();
new inter()
public void show2()
}.show2();}}
1.下面是匿名內部類呼叫方法:這樣是可以的
new inter()
public void show2()
}.show1();
new inter()
public void show2()
}.show2();
解釋:但是匿名內部類得初衷是為了少寫**但是你看匿名內部類呼叫方法方式太複雜了.
2.改善
inter in = new inter()
public void show2()
};in.show1();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的
in.show2();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的
//上面的**和下面的意思是一樣的
inner i = new inner();
解釋:因為new inter() {}整個這一塊相當於inter的子類物件,在這個物件前面加上乙個inter in不就是相當於父類型別的變數指向子類物件.這不就是多型嗎!其實它就是多型. 它和 inner i = new inner();是乙個意思
in.show1();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的
in.show2();//編譯看左邊(看介面裡的),執行看右邊看子類裡面的
總結: 匿名內部類什麼時候最合適使用,當介面裡面只有乙個抽象方法的時候.有多個時候就用多型吧.
/*
匿名內部類補足**練習
*/class demo11_innerclass
}inte***ce inter
class outer
}
分析:
我們在主方法裡看到outer.method()竟然可以呼叫方法,我們學的只有物件才能呼叫方法,說明什麼?說明outer呼叫method()方法後返回了乙個物件,然後呼叫show()方法.
呼叫show方法必須要有個類實現介面,並且實現這個介面裡面的show方法,然後才能呼叫show方法.
實現介面的類,就是這個介面的子類,然後想想咱們學的多型,父類裡面的方法,子類重寫後的呼叫過程(父類型別的引用指向子類物件,編譯看左邊,執行看右邊)所以可以判斷這個返回值型別應該寫inter,也就是用父類來接收.這樣返回的物件是inter的子類物件.物件的引用型別是inter.
4.下面來實現這個**
/*
匿名內部類補足**練習
*/class demo11_innerclass
}inte***ce inter
class outer
};*/
//注釋的這個**還可以這樣寫
inter in = new inter()
};return in;}}
5. 補充:method方法可以直接呼叫,說明method方法是靜態的,然後它接著還能呼叫,說明呼叫method方法返回的是乙個物件.
1.匿名內部類以引數傳遞練習
/*
匿名內部類以引數傳遞練習
*/class demo12_innerclass
});}
pulic static void function(inter in)
inte***ce inter
2.匿名內部類的.class檔案沒有名字. 內部類,匿名內部類
內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 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...