当前位置: 首页 > article >正文

Java 中接口的具名实现和匿名实现

在 Java 中,接口的实现方式可以通过具名实现(即通过类名实现)和匿名实现(即匿名内部类实现)。这两种方式各有用途,具体区别如下:

  • 具名实现:通过类名来实现接口,可以重用该类。
  • 匿名实现:通过匿名类(没有名字的类)来实现接口,通常用于只需要一次性使用的场景。

具名实现接口

// 定义接口 Animal
interface Animal {
    void sound();
    void move();
}

// 具名类实现接口
class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("The dog barks");
    }

    @Override
    public void move() {
        System.out.println("The dog runs");
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建具名类对象
        Animal dog = new Dog();
        dog.sound();  // 输出:The dog barks
        dog.move();   // 输出:The dog runs
    }
}

匿名实现接口

匿名实现是在不创建具体类名的情况下,直接在代码中实现接口。

// 定义接口 Animal
interface Animal {
    void sound();
    void move();
}

public class Main {
    public static void main(String[] args) {
        // 使用匿名内部类实现接口
        Animal cat = new Animal() {
            @Override
            public void sound() {
                System.out.println("The cat meows");
            }

            @Override
            public void move() {
                System.out.println("The cat jumps");
            }
        };

        // 调用匿名类的方法
        cat.sound();  // 输出:The cat meows
        cat.move();   // 输出:The cat jumps
    }
}

匿名与具名实现的比较

  1. 具名实现

    • 可重用:可以创建多个对象使用相同的类。
    • 代码更易维护:类的实现与接口分离,清晰明确。
  2. 匿名实现

    • 一次性使用:适合临时创建对象,不需要重复使用。
    • 代码简洁:避免了为简单的实现定义多个类。

示例总结

  • 具名类实现Dog 类具名实现了 Animal 接口,可以多次创建 Dog 对象。
  • 匿名内部类实现:在 Main 方法中,直接实现了 Animal 接口,不需要创建一个具名类。

http://www.kler.cn/news/361701.html

相关文章:

  • 深度解析RLS(Recursive Least Squares)算法
  • Android 设置控件为圆形
  • 在做题中学习(65):Z字形变换
  • OS管理和进程的学习
  • 文件处理新纪元:微信小程序的‘快递员’与‘整理师’
  • 学习threejs,拉伸几何体THREE.TubeGeometry管道
  • 简述微服务高可用之Sentinel、Seate
  • 基于深度学习的地球观测中的目标检测
  • R语言医学数据分析实践-高级回归分析
  • Spring Boot Web智慧社区平台:设计与实现
  • 【Java】并发韵律:多线程编程的深度探索与艺术实践
  • 问题:uniApp 开发中使用 padding: 0 10px,右内边距不起作用
  • 装饰器模式知识分享:Android (Kotlin) 与 iOS (Swift) 实现
  • 无人机飞手执照培训为什么需要脱产学习?
  • Java的评论大冒险:用代码征服API数据
  • C++之《剑指offer》学习记录(10):链表
  • leetcode计数排序
  • 在软件开发中低耦合和高内聚是什么,如何实现,请看文章
  • 3194. 最小元素和最大元素的最小平均值 简单
  • CEEMDAN +组合预测模型(Transformer - BiLSTM + ARIMA)
  • React核心技术解析:以“智能购物助手”洞悉奥秘
  • Unity/C#使用EPPlus读取和写入Excel
  • 如何开启华为交换机 http
  • 【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO
  • 023_net基于ASP.NET的图书借阅系统的设计与实现2024_281bfi3e
  • C# WinForms 仿Toast弹出实现