首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

JAVA 两个类同时实现同一个接口的方法

编程知识
2024年08月12日 15:53

在Java中,两个类同时实现同一个接口是非常常见的。接口定义了一组方法,实现接口的类必须提供这些方法的具体实现。以下将展示如何实现这一要求,并提供具体的代码示例。

示例接口

首先,定义一个简单的接口,比如一个表示动物的接口,它有一个方法makeSound

public interface Animal {  
    void makeSound();  
}

1. 方法一:两个类分别实现接口

这是最直接的方法,每个类分别提供接口方法的实现。

1.1 类1:Dog

public class Dog implements Animal {  
    @Override  
    public void makeSound() {  
        System.out.println("Dog says: Bark");  
    }  
}

1.2 类2:Cat

public class Cat implements Animal {  
    @Override  
    public void makeSound() {  
        System.out.println("Cat says: Meow");  
    }  
}

1.3 测试代码

接下来,可以通过以下测试代码来演示接口的实现:

public class Main {  
    public static void main(String[] args) {  
        Animal myDog = new Dog();  
        Animal myCat = new Cat();  
          
        myDog.makeSound();  
        myCat.makeSound();  
    }  
}

2. 方法二:使用匿名内部类

如果不想创建具体的类,也可以使用匿名内部类来实现接口。

public class Main {  
    public static void main(String[] args) {  
        Animal myDog = new Animal() {  
            @Override  
            public void makeSound() {  
                System.out.println("Dog says: Bark");  
            }  
        };  
  
        Animal myCat = new Animal() {  
            @Override  
            public void makeSound() {  
                System.out.println("Cat says: Meow");  
            }  
        };  
  
        myDog.makeSound();  
        myCat.makeSound();  
    }  
}

3. 方法三:使用Lambda表达式(适用于函数式接口)

如果接口是一个函数式接口(即只有一个抽象方法的接口),可以使用Lambda表达式来实现它。

3.1 修改接口为函数式接口

为了使用Lambda表达式,接口可以保持不变,因为它已经是一个函数式接口(只有一个方法)。

3.2 使用Lambda表达式

public class Main {  
    public static void main(String[] args) {  
        Animal myDog = () -> System.out.println("Dog says: Bark");  
        Animal myCat = () -> System.out.println("Cat says: Meow");  
  
        myDog.makeSound();  
        myCat.makeSound();  
    }  
}

4.总结

通过上述三种方法,可以看到如何在Java中让两个类同时实现同一个接口。每种方法都有其适用场景:

(1)直接实现接口:适用于标准的面向对象编程。

(2)匿名内部类:适用于需要简单实现接口但不想创建具体类的场景。

(3)Lambda表达式:适用于函数式接口,可以使代码更简洁。

From:https://www.cnblogs.com/TS86/p/18355297
本文地址: http://shuzixingkong.net/article/1027
0评论
提交 加载更多评论
其他文章 手把手教你实现Scrapy-Redis分布式爬虫:从配置到最终运行的实战指南
本文详细讲解了如何通过Scrapy-Redis实现分布式爬虫的全过程,涵盖配置步骤、代码实现以及最终运行的效果展示。通过实战操作,帮助读者快速掌握Scrapy-Redis在分布式爬虫中的应用技巧。
手把手教你实现Scrapy-Redis分布式爬虫:从配置到最终运行的实战指南 手把手教你实现Scrapy-Redis分布式爬虫:从配置到最终运行的实战指南
《数据资产管理核心技术与应用》读书笔记-第三章:数据血缘
《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,了解数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要介绍大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与告警、数据服务、数据权限
《数据资产管理核心技术与应用》读书笔记-第三章:数据血缘 《数据资产管理核心技术与应用》读书笔记-第三章:数据血缘 《数据资产管理核心技术与应用》读书笔记-第三章:数据血缘
java 栈与队列
Java中的栈与队列 一、栈(Stack) 1.1 介绍 栈是一种后进先出(LIFO,Last In First Out)的数据结构。在栈中,元素的插入和删除操作都是在栈顶进行的。Java中的java.util.Stack类实现了栈的基本功能,包括push()入栈、pop()出栈、peek()查看栈
零基础学习人工智能—Python—Pytorch学习(四)
前言 接续上一篇的optimizer的学习。 optimizer 代码和上一篇文章的一样,如下: import torch import numpy as np import torch.nn as nn X = torch.tensor([1, 2, 3, 4], dtype=torch.floa
零基础学习人工智能—Python—Pytorch学习(四)
Python 开发环境的准备以及一些常用类库模块的安装
在学习和开发Python的时候,第一步的工作就是先准备好开发环境,包括相关常用的插件,以及一些辅助工具,这样我们在后续的开发工作中,才能做到事半功倍。下面介绍一些Python 开发环境的准备以及一些常用类库模块的安装和使用的经验总结,供大家参考了解。
Python 开发环境的准备以及一些常用类库模块的安装 Python 开发环境的准备以及一些常用类库模块的安装
nginx配置web服务|反向代理|负载均衡
目录http模块server模块(虚拟主机配置)location模块基本语法匹配类型等号匹配(=)正则匹配(~)忽略大小写的正则匹配(~*)常见指令嵌套 location反向代理负载均衡步骤 1: 定义 Upstream 块步骤 2: 配置 Server 和 Location 块示例配置负载均衡策略
面试官:说说读写锁的实现原理?
在实际项目开发中,并发编程一定会用(提升程序的执行效率),而用到并发编程那么锁机制就一定会用,因为锁是保证并发编程的主要手段。 在 Java 中常用的锁有以下几个: synchronized(内置锁):Java 语言内置的关键字,JVM 层级锁实现,使用起来较为简单直观。 ReentrantLock
面试官:说说读写锁的实现原理? 面试官:说说读写锁的实现原理? 面试官:说说读写锁的实现原理?
记录兼职运维的一天
1.背景 7月底部门的运维大哥离职了,奈何又没有新运维接替,至于为什么没有补位,懂得都懂,按老大的意思是先让开发一人顶一块,8月底争取补上。 打心底我有点排斥这事,但是人到中年又有什么办法呢,上有老下有小,唯有苟。 分派给我的部分是服务器漏洞的修复,小弟虽然懂几个linux命令但是在“漏洞修复”这个
记录兼职运维的一天 记录兼职运维的一天 记录兼职运维的一天