0


21、Java 中接口的基本使用

文章目录

一、接口(Interface)基本使用

📝 接口是一系列方法声明的集合(和抽象类类似)
📝 接口是用来定义规范和标准的
📝 接口通过

interface

关键字定义
📝 类可通过

implements

关键字实现接口中的方法
📝 接口中可定义抽象方法


📓 需求:家长请家教教小孩子👶学习(家教👨‍🏫的需求:① 会教画画;② 会教音乐🎼;③ 会教数学)
📓 把需要老师具备的能力抽象为方法(如:teachDrawing、teachMusic、teachMath)
📓 定义一个接口(通过

interface

关键字),在接口中定义抽象方法(teachDrawing、teachMusic、teachMath)
📓 这个接口是能够当家教老师的人需要遵循的规范、能够当家教老师的人需要遵循的规范标准
📓 认为自己能够胜任家教老师的人需要实现(

implements

)该接口中所有方法


孩子类:
publicclassChild{privateString name;privateTeacherable teacherable;publicStringgetName(){return name;}publicChild(String name){this.name = name;}publicvoidsetTeacherable(Teacherable teacherable){this.teacherable = teacherable;}publicvoidstudy(){
        teacherable.teachDrawing(this);
        teacherable.teachMusic(this);
        teacherable.teachMath(this);}}
Teacherable 接口:
/**
 * 能够胜任家教老师的人都必须实现 Teacherable 里面的三个方法
 */publicinterfaceTeacherable{publicabstractvoidteachDrawing(Child child);publicabstractvoidteachMusic(Child child);publicabstractvoidteachMath(Child child);}
Student 学生类实现 Teacherable 接口:
publicclassStudentimplementsTeacherable{@OverridepublicvoidteachDrawing(Child child){System.out.println("Student teaches【"+ child.getName()+"】画画");}@OverridepublicvoidteachMusic(Child child){System.out.println("Student teaches【"+ child.getName()+"】音乐");}@OverridepublicvoidteachMath(Child child){System.out.println("Student teaches【"+ child.getName()+"】数学");}}
Robot 机器人类实现 Teacherable 接口:
publicclassRobotimplementsTeacherable{@OverridepublicvoidteachDrawing(Child child){System.out.println("Robot 教【"+ child.getName()+"】画画");}@OverridepublicvoidteachMusic(Child child){System.out.println("Robot 教【"+ child.getName()+"】音乐");}@OverridepublicvoidteachMath(Child child){System.out.println("Robot 教【"+ child.getName()+"】数学");}}
TestDemo 测试类:
publicclassTestDemo{publicstaticvoidmain(String[] args){Child qy =newChild("庆医");// qy.setTeacherable(new Student());
        qy.setTeacherable(newRobot());
        qy.study();}}

二、接口中可定义的内容

📓 抽象方法:被

abstract

修饰的方法
📓 常量

static final

📓 嵌套类型
📓 从 Java8 开始还可以定义:默认方法(被

default

修饰的方法)、静态方法(被

static

修饰的方法)


📓 上述可以定义的内容都是隐式

public

的(默认就是

public

,开发者定义的时候可以省略)
📓 接口中定义的方法默认就是抽象方法(开发者在接口中定义方法的时候可以

abstract

关键字)
📓 从 Java9 开始可以定义

private

方法
📓 定义常量的时候可以省略 staticfinal
📓 不能自定义构造方法、不能定义(静态)初始化块
📓 接口没有实例化的说法

publicinterfaceTestable{int MY_MONEY =859632587;voidtest1();voidtest2(String description);classDemo{}staticvoidtest3(){System.out.println("接口中可以定义静态方法");}}

三、接口细节

📝 接口是引用数据类型
📝 一个类可以通过

implements

关键字实现一个或多个接口
📝 实现(

implements

)接口的类必须实现接口中的所有抽象方法(除非它是一个抽象类)
📝 若一个类实现的多个接口中有相同的抽象方法,该相同的抽象方法只需要被实现一次
📝

extends

implements

可以一起使用(

implements

必须写在

extends

的后面)

✒️ 当父类和接口中的方法的方法签名一样的时候,返回值类型也必须一样

publicclassBaseTestDemo{publicStringtest(String description){return description;}}
publicinterfaceTestable{Stringtest(String description);}
publicclassTestDemoextendsBaseTestDemoimplementsTestable{publicstaticvoidmain(String[] args){TestDemo testDemo =newTestDemo();// HappySystem.out.println(testDemo.test("Happy"));}}

📝 一个接口可以通过

extends

关键字继承一个或多个接口

✒️ 当多个父接口中的方法的方法签名一样的时候,返回值类型也必须一样


📱 结束!如有错误,请不吝赐教!


本文转载自: https://blog.csdn.net/m0_54189068/article/details/126840255
版权归原作者 new Handsome() 所有, 如有侵权,请联系我们删除。

“21、Java 中接口的基本使用”的评论:

还没有评论