JAVA 两个类同时实现同一个接口的方法
在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表达式:适用于函数式接口,可以使代码更简洁。
JAVA 两个类同时实现同一个接口的方法的更多相关文章
- Java的Stack类实现List接口真的是个笑话吗
今天在网上闲逛时看到了这样一个言论,说“Java的Stack类实现List接口的设计是个笑话”. 当然作者这篇文章的重点不是这个,原本我也只是一笑置之,然而看评论里居然还有人附和,说“Ja ...
- 【java回调】java两个类之间的回调函数传递
背景交代:熟悉用js开发的cordovaAPP:对java一窍不通的我,老师让做一个监测用户拍照事件的功能,无奈没有找到现成的库,无奈自己动手开发java插件~~0基础java GreenHand,祝 ...
- 探Java多线程Thread类和Runnable接口之间的联系
首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说 有如下两种情 ...
- java使用匿名类直接new接口
翻看Vector代码的时候,看到这么一段. /** * Returns an enumeration of the components of this vector. The * returned ...
- Java中Object类常用的12个方法,你用过几个?
前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”.Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object ...
- java:使用匿名类直接new接口
java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口 ...
- java中的类实现comparable接口 用于排序
import java.util.Arrays; public class SortApp { public static void main(String[] args) { Student[] s ...
- java两个引用指向同一个对象
- Java两个引用指向同一个数组
- 转!!java泛型概念(泛型类,接口,方法)
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...
随机推荐
- Vulnhub Fall Walkthrough
Recon 二层本地扫描,发现目标靶机. ┌──(kali㉿kali)-[~] └─$ sudo netdiscover -r 192.168.80.0/24 Currently scanning: ...
- SpringBoot 过滤器更改 Request body ,并实现数据解密
客户端.服务端网络通信,为了安全,会对报文数据进行加解密操作. 在SpringBoot项目中,最好使用参考AOP思想,加解密与Controller业务逻辑解耦,互不影响. 以解密为例:需要在reque ...
- Linux中的inode
inode是什么 一个文件由两部分组成:元信息和数据. 在Linux中,inode包含文件的元信息,具体来说有以下内容: Size 文件的字节数 Uid 文件拥有者的User ID Gid 文件的Gr ...
- Debezium-Flink-Hudi:实时流式CDC
1. 什么是Debezium Debezium是一个开源的分布式平台,用于捕捉变化数据(change data capture)的场景.它可以捕捉数据库中的事件变化(例如表的增.删.改等),并将其转为 ...
- python基础-字符串str " "
字符串的定义和操作 字符串的特性: 元素数量 支持多个 元素类型 仅字符 下标索引 支持 重复元素 支持 可修改性 不支持 数据有序 是 使用场景 一串字符的记录场景 字符串的相关操作: my_str ...
- 创龙科技位居头版,2023深圳elexcon电子展为智能化赋能!
紧跟前沿技术应用及市场发展热点,elexcon2023聚焦三大展示板块:"嵌入式与AIoT展""电源与储能展""SiP与先进封装展",吸引了 ...
- 怎么判断一个变量arr的话是否为数组(此题用 typeof 不行)?
arr instanceof Array arr.constructor == Array Object.protype.toString.call(arr) == '[Object Array]'
- SpringBoot AOP完美记录用户操作日志,附源码
记录内容 接口名称 浏览器名称 操作系统 请求ip 接口入参.出参 接口耗时 .... 表结构 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -- ...
- [oeasy]python0072_自定义小动物变色_cowsay_color_boxes_asciiart
修改颜色 回忆上次内容 上次搞的是 颜色 前景颜色 总共有 7 种基本色 还有什么 好玩的 么? 可以 给小动物 上色 吗? 配合 先将cowsay结果 输出重定向 sudo apt install ...
- ElementUI Dialog 结合Vue实现对话框body“二分”布局
Dialog 结合Vue实现对话框body"二分"布局 需求描述 如下图, 把对话框body内容部分,分成上下两部分,其中上部分高度根据窗口大小动态调整,如果内容过多,则出现滚动条 ...