匿名内部类案例

代码案例:

匿名内部类案例

执行结果:

in method

ma in anonymous inner class

in method

ma in local inner class

过程解析:

首先找到main方法,执行MyClass.method(匿名内部类),调用method(IA a)方法,将匿名内部类当做一个参数传入到method(IA a)中,执行方法体,打印出in method接着,执行ia.ma(),如果将匿名内部类还原就如下图所示,匿名内部类的存在就是为了重写抽象类或接口中的方法,执行ia.ma()就变成了实现IA接口中的抽象方法ma(),即打印出ma in anonymous inner class接着向下执行class MyMaClass implements IA(),这个是一个方法内部类,里面只有一个ma(),方法只有被调用才能执行,所以该ma()方法此时不会被执行。接着向下执行MyClass.method(匿名对象),调用method(IA a)方法,传入参数,首先打印出in method,接着执行ia.ma()相当于执行new MyMaClass().ma(),调用MyMaClass内中的ma()方法,执行ma in local inner class

匿名内部类案例