首页 > 编程语言 >JAVA 两个类同时实现同一个接口的方法

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

时间:2024-08-12 16:55:08浏览次数:15  
标签:makeSound JAVA 同一个 void 接口 Cat Animal public

在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表达式:适用于函数式接口,可以使代码更简洁。

标签:makeSound,JAVA,同一个,void,接口,Cat,Animal,public
From: https://www.cnblogs.com/TS86/p/18355297

相关文章

  • java .stream(). 使用介绍 Streams API
    Java8引入了StreamsAPI,它允许我们以声明性方式处理序列的数据。.stream()是这一API的核心方法,用于从一个数据源(如数组、集合等)创建一个流(Stream)。以下是.stream()方法的一些基本使用介绍:1.从集合创建流List<String>myList=Arrays.asList("a","b","c");Stream<S......
  • Java基础语法
    Java基础语法注释写代码要有好的规范三种注释:单行注释publicclassHelloWorld{publicstaticvoidmain(String[]args){//单行注释//输出一个HelloWorld!System.out.println("HelloWorld!");}}多行注释//多行注释......
  • Java Reentrantlock可重入锁原理 | 源码探究
    一、基本概念ReentrantLock是Java中提供的一个可重入互斥锁,它是java.util.concurrent.locks包中的一个接口Lock的实现类。ReentrantLock提供了比使用synchronized关键字更强大的锁定机制,例如 公平锁 和 非公平锁 选择、尝试锁定、可中断锁定等。ReentrantLock......
  • [Java/SQL] 自动去除SQL注释
    0引言在数据连接(池)框架、数据服务/DatatoAPI等中间平台中,因部分数据库不允许SQL中存在注释信息(如:Redis、OpenGemini等;当然,MYSQL、INFLUXDB等数据库是支持的),故存在这样一个需求:在提交到数据库的SQL,需对原始SQL的注释信息予以去除。以OpenGeminiV1.2.0数据库为例,如果......
  • Java基础-学习笔记08
    01类变量、类方法、main方法、代码块类变量(静态变量)类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。关于静态变量在内存中的存放地址,有两种说法,①认为静态变量......
  • JDK自带命令:深入理解Java程序的运行机制
    JDK(JavaDevelopmentKit)是Java开发和运行环境的核心,它提供了丰富的命令和工具来帮助我们更好地理解和控制Java程序的运行。本文将详细介绍JDK自带的一些关键命令,以及它们的详细参数和执行结果。1.jps(JavaVirtualMachineProcessStatusTool)jps命令用于列出正在运行的......
  • JAVA中的File类
    File类概述`File`类提供了一系列的方法来操作文件和目录。它不直接访问文件内容本身,而是操作文件系统的属性,如文件大小、最后修改时间、文件类型(普通文件、目录等)等。需要注意的是,`File`对象本身只是文件路径的抽象表示,只有当通过`File`对象调用相关方法时,才会与底层文件系统......
  • 三十分钟入门基础Go(Java小子版)
    前言Go语言定义Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种静态、强类型、编译型语言。Go语言语法与C相近,但功能上有:内存安全,GC,结构形态及CSP-style并发计算。适用范围本篇文章适用于学习过其他面向对象语言(Java、Php),但没有学过......
  • ROS 2 自定义接口(消息、服务和动作)
    ROS2自定义接口(消息、服务和动作)在ROS2中,自定义接口是构建复杂机器人系统的核心。自定义接口使开发者能够定义特定于应用的数据结构和通信模式,包括消息(Message)、服务(Service)和动作(Action)。本文将介绍如何在ROS2中创建和使用这些自定义接口。1.自定义消息(Message)......
  • 科普文:Java基础系列之【你必须知道的框架基础-代理详解】
     概叙科普文:Java基础系列之【你必须知道的框架基础-反射/代理】-CSDN博客前面我们详细讲解了反射,反射作用在类加载后创建对象这个期间,再来看看代理。反射是基础,通过反射获取对象及其属性和操作;代理则可以将反射出来的类包装成目标类,然后构建一个代理类,通过代理类来操控目......