匿名内部类实现操作类调用方法

本文探讨了在Java开发中如何使用匿名内部类来简化操作类调用接口方法的过程,避免了创建单独的接口实现类。通过示例展示了如何在不改变接口和操作类的情况下,直接在主函数中使用匿名内部类实现接口方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

匿名内部类在开发中的使用

在这里插入图片描述

如果一个方法要的形参是接口,其实他要的是该接口的实现类的对象

不采用内部类时,想要实现操作类中方法: 不仅需要定义操作类和接口,还要定义重写接口的实现类

接口:

package com.oop.demo10;

public interface Jumping {
    void jump();
}

继承接口的实现类:

package com.oop.demo10;

/*
实现类
 */
public class Cat implements Jumping{//实现类继承接口,重写方法
    @Override
    public void jump() {
        System.out.println("猫可以跳高了");
    }
}

操作类

package com.oop.demo10;

/*
操作类
 */
public class JumpingOperator {
    public void method(Jumping j){//一个方法的形参要求的是一个接口,那么它实际要的是该接口的实现类对象
        j.jump();
    }
}

主函数测试:

package com.oop.demo10;

/*
 * 测试类
 */

public class JumpingTest {
    public static void main(String[] args) {
        //创建接口操作类的对象,调用method方法
        JumpingOperator jo = new JumpingOperator();
       
        Jumping j=new Cat();//定义一个实现类的对象
        jo.method(j);//实参传的是实现类的对象
        System.out.println("----------------------------");


    }

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-swQdmYIW-1598520397770)(C:\Users\张超\AppData\Roaming\Typora\typora-user-images\image-20200827171405331.png)]

**采用内部类,实现操作类中方法:**接口、操作类不变的前提下,不用再重新定义一个接口的实现类

主函数如今为:

package com.oop.demo10;

/*
 * 测试类
 */

public class JumpingTest {
    public static void main(String[] args) {
        //创建接口操作类的对象,调用method方法
        JumpingOperator jo = new JumpingOperator();

       //想要调用method方法,需要一个接口,也就是需要一个实现类对象
        //匿名内部类本质是实现了接口的匿名对象

        jo.method(new Jumping() {//new 了jumping对象之后直接一回车即可出现重写方法
            @Override
            public void jump() {
                System.out.println("猫可以跳高了");
            }
        });

        jo.method(new Jumping() {
            @Override
            public void jump() {
                System.out.println("狗可以跳高了");
            }
        });//依然是调用了操作类中的method方法,但是里面的实参从接口的实现类对象变成了内部类对象

    }

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qvncg7qN-1598520397774)(C:\Users\张超\AppData\Roaming\Typora\typora-user-images\image-20200827171928700.png)]

这样不管写多少个“可以跳高了”,都可以完成,而不用定义多个实现类

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值