匿名對象:沒有名字的對象。
非匿名對象:
ClassName c=new ClassName();
c.run();
匿名對象:
new ClassName().run();
注意事項:
1、當對像對方法僅進行一次調用的時候,就可以簡化成匿名對象。
2、兩個匿名對像不可能是同一個對象。
3、一般不給匿名對象賦予屬性值,因為永遠無法獲取到。
4、運行一次,直接就被回收掉了,節省內存空間。
匿名對象使用的代碼例子:
public class Anony{int a=1;int b=2;void run(){System.out.println(a+b);}public static void main(String[] args){new Anony().a=10; //匿名對像不能重新賦值,賦值仍然失效Anony a=new Anony();a.run(); //通過創建對象的方式去調用方法new Anony().run(); //匿名創建對象並調用方法}}運行結果:
3
3
匿名內部類:匿名內部類也就是沒有名字的內部類。
格式:
ClassName object=new ClassName(){
/*代碼塊*/
};
注意事項:
1、匿名內部類必須繼承一個父類或實現一個接口。
抽像類代碼例子:(接口同理)
abstract class AnonyTest{int a=1;int b=2; public abstract void run();}public class AnonyInner{public static void main(String[] args){AnonyTest a=new AnonyTest(){ //抽象匿名類public void run() {System.out.println(a+b);}};a.run();}}如果不使用匿名內部類來實現抽象方法:
abstract class AnonyTest{int a=1;int b=2; public abstract void run();}class AnonyDemo extends AnonyTest{public void run() {System.out.println(a+b);}}public class AnonyInner{public static void main(String[] args) {AnonyTest a=new AnonyDemo(); //上轉對象a.run();}}運行結果:
3