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()方法的形参或类的成员变量接收,并作为接口方法的调用主体的两种方法。
版权声明:本文为weixin_43805496原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。