Java匿名对象与匿名内部类

时间:2021-05-20

匿名对象:没有名字的对象。

非匿名对象:

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章