interface A {
public void fun1();
}
class B {
int i = 10;
class C implements A {
public void fun1() {
System.out.println(i);
}
}
public void get(A a) {
a.fun1();
}
public void test() {
this.get(new C());
}
}
class TestNonameInner1 {
public static void main(String[] args) {
B b = new B();
b.test();
}
}
输出结果:
10
上面的程序有些读者可能会认为与以前的内部类没有太大的区别,也是在类内部声明了一个类,与原先不同的是多实现了一个接口罢了。的确,这里只是简单的声明了一个内部类,目的并不是要再重新介绍一遍内部类的概念,而是为了引出下面的概念——匿名内部类。
interface A1 {
public void fun1();
}
class B1 {
int i = 10;
public void get(A1 a) {
a.fun1();
}
public void test() {
this.get(new A1() {
public void fun1() {
System.out.println(i);
}
});
}
}
class TestNonameInner2 {
public static void main(String[] args) {
B1 b = new B1();
b.test();
}
}
输出结果:
10