在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 两个类同时实现同一个接口的方法的更多相关文章

  1. Java的Stack类实现List接口真的是个笑话吗

        今天在网上闲逛时看到了这样一个言论,说“Java的Stack类实现List接口的设计是个笑话”.   当然作者这篇文章的重点不是这个,原本我也只是一笑置之,然而看评论里居然还有人附和,说“Ja ...

  2. 【java回调】java两个类之间的回调函数传递

    背景交代:熟悉用js开发的cordovaAPP:对java一窍不通的我,老师让做一个监测用户拍照事件的功能,无奈没有找到现成的库,无奈自己动手开发java插件~~0基础java GreenHand,祝 ...

  3. 探Java多线程Thread类和Runnable接口之间的联系

    首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说  有如下两种情 ...

  4. java使用匿名类直接new接口

    翻看Vector代码的时候,看到这么一段. /** * Returns an enumeration of the components of this vector. The * returned ...

  5. Java中Object类常用的12个方法,你用过几个?

    前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”.Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object ...

  6. java:使用匿名类直接new接口

    java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口 ...

  7. java中的类实现comparable接口 用于排序

    import java.util.Arrays; public class SortApp { public static void main(String[] args) { Student[] s ...

  8. java两个引用指向同一个对象

  9. Java两个引用指向同一个数组

  10. 转!!java泛型概念(泛型类,接口,方法)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

随机推荐

  1. 如何搭建私有的ChatGPT服务

    背景 是这样的,我们几个朋友众筹共享一个chatGPT4 Plus账号,且不想多人公用一个账号登录使用web版,想大家各自搞个本地的ChatGPT客户端,共用一个api-key. 我找了一圈,决定使用 ...

  2. 认真学习css3--01-全是日志没有技术内容

    由于某些原因,还是要写写前端代码. 虽然这不是我的主要责任,但也有表率的必要性. css3这个东西没有什么大难度,难点主要集中在: 1)样式比较多 2)精准定位 3)性能优化 其中第2个是日常经常面对 ...

  3. 个人团队兼职开发app(社交,语聊1v1,视频直播)

    如果您有意向创业,意向社交类产品,如语聊,及时通信,视频直播,1v1等,又苦无没有人力资源. 我们岁数都是30+,在互联网行业摸爬滚打十年有余. 后端,前端,客户端,运维,四个人. 我们共事很长一段时 ...

  4. xpath-猪八戒网服务商名称爬取

    import requests from lxml import etree url = 'https://changsha.zbj.com/xcxkfzbjzbj/f.html?fr=zbj.sy. ...

  5. 为给git设置代理

    为给git设置代理 通过软件形式为git设置代理 命令(端口改为自己的端口): git config --global https.proxy http://127.0.0.1:1083 git co ...

  6. 复习 - es6语法

    这几天电脑有点问题,一直在弄,而且论文也逼近了也在时间弄那个 ,前面node有一个大项目,已经做完了,我现在是准备把上次复习断下的继续复习一直到这个项目,然后就开始vue了. 1. 首先是函数的一个进 ...

  7. Top cluster 树分块

    写点基础的东西.随便写的,勿喷. top cluster 一个 cluster 是一个联通子图,且至多有两个点与其他部分连接 这两个点被称为 boundary node 其余点被称为 internal ...

  8. sqlite相关

    前言 本文记录一些sqlite相关笔记,随时更新. 正文 时间函数 datetime() -- 当前时间 2022-03-24 17:32:43 select datetime('now'); --2 ...

  9. TOPSIS模型原理以及代码实现

    TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距.下面我们来介绍具体步骤与代码实现 目录 问题提出 第一步:数据输入 1.如何从excel ...

  10. SqlParameter,参数化查询问题

    SqlParameter p = new SqlParameter("@pageIndex", (object)pageIndex); SqlParameter带有两个参数的构造函 ...