赞
踩
1.### 需求:
在控制台输出”HelloWorld”
interface Inter { void show(); } class Outer{ public static Inter method() { return new Inter() { @Override public void show() { System.out.println("HelloWorld"); } }; } } public class OuterDemo { public static void main(String[] args) { Outer.method().show(); } }
注:这种方式是将匿名内部类(接口实现类对象)作为方法method()的返回值return,因此在语法上return后的对象可以直接调用重写的接口方法show()。
2.### 需求:
在测试类Test中创建A的对象a并调用成员方法methodA(),要求用两种方式实现
public class OuterDemo2 { public static void main(String[] args) { //1.普通调用方式 A a = new A(); a.methodA(new InterA() { @Override public void showA() { System.out.println("HelloWorld"); } }); //2.匿名内部类直接调用 new InterA(){ @Override public void showA() { System.out.println("HelloWorld"); } }.showA(); } } interface InterA { void showA(); } class A { public void methodA(InterA a) { a.showA(); } }
3.### 需求:
在测试类Test中创建B的对象b,并调用成员方法methodB
public class Test { public static void main(String[] args) { B b = new B(new InterB() { @Override public void showB() { System.out.println("HelloWorld"); } }); b.methodB(); new InterB(){ @Override public void showB() { System.out.println("HelloWorld"); } }.showB(); } } //定义一个接口 interface InterB { void showB(); } //目标:调用成员方法methodB class B { InterB b; public B(InterB b){ this.b = b; } public void methodB(){ b.showB(); } }
注:2、3中,匿名内部类分别实现了作为(接口实现类对象直接调用重写的接口方法)、作为对象由method()方法的形参或类的成员变量接收,并作为接口方法的调用主体的两种方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。