Java匿名内部类的三种使用方式

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()方法的形参或类的成员变量接收,并作为接口方法的调用主体的两种方法。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值