【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!“这里是云端源想IT,帮你轻松学IT”嗨~ 今天的你过得还好吗?莫道人生多不足眼前分明好时光- 2023.06.26 -接口(硬件类接口)是指同

欢迎大家来到IT世界,在知识的湖畔探索吧!

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

“这里是云端源想IT,帮你轻松学IT”

嗨~ 今天的你过得还好吗?

莫道人生多不足

眼前分明好时光

– 2023.06.26 –

接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。

接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。

今天小编给大家带来接口的相关知识点:接口是什么,Java中为什么要使用接口,怎么使用接口以及接口与抽象类的区别。那么首先我们来看看Java为什么要使用接口?

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

一、为什么要使用接口

首先,我们都知道Java不支持多继承,但是支持实现多接口,因此在使用中如果仅仅使用抽象类会具有相当大的局限性。

其次,从语义上来讲,抽象类是是一种严格的is-a关系,比如,学生是人,老师也是人。因此可以将学生和老师可以继承类people而接口更倾向于实现类具有一些公共的特性或方法,比如学生会拍球,海豚也会拍球。

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

例子如下:

public class people {

void speak(){

System.out.println(“说话”);

}

}

class Student extends people implements play{

@Override

void speak() {

super.speak();

}

@Override

public void playBall() {

System.out.println(“学生玩球”);

}

}

class Teacher extends people{

@Override

void speak() {

super.speak();

}

}

class Dolphin implements play{

@Override

public void playBall() {

System.out.println(“海豚玩球”);

}

}

interface play{

void playBall();

}

最后,接口是java多态的一种实现方式,可以降低程序的耦合度。

二、接口的概念

接口,是Java语言中的一种引用类型,是方法的集合,如果说类的内部封装了成员变量和构造方法,成员方法,那么接口的内部主要就是封装了方法。

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

接口的定义:

接口的定义和类的定义很相似,但是不再使用Class关键字进行声明,虽然它也会被编译成Class文件,但一定要明确他并不是类,而是另外一种引用类型。接口就是多个类的公共规范,接口也是一种引用数据类型。

接口中的内容

如果是JDK1.7,那么接口中包含的内容包含常量和抽象方法;

如果是JDK1.8,还可以包含默认方法和静态方法;

如果是JDK1.9,还可以包含私有方法。

三、接口的使用步骤

1、接口不能直接使用,必须要有一个实现类来实现该接口,通过implements关键字,一个实现接口的类可以被看做是接口的一个子类,需要重写接口中的所有抽象方法,创建该子类对象,就可以调用方法了。

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

接口的的格式

public interface 接口名称{

//抽象方法 (主要)(JDK1.7)

//常量 (JDK1.7)

//默认方法 (JDK1.8)

//静态方法 (JDK1.8)

//私有方法(JDK1.9)

}

含有抽象方法

抽象方法:使用abstract关键字修饰,没有方法体内容,该方法主要是提供给子类使用的

public interface InterfaceName{

public abstract void method();

}

含有默认方法和静态方法

默认方法: 使用default关键字修饰的方法,不可省略,供子类调用或者子类重写。

静态方法: 使用static关键字修饰,供接口直接调用。

含有私有方法和私有静态方法

私有方法: 使用private关键字修饰,供接口中的默认方法或者是静态方法调用。(JDK1.9)

public interface InterfaceName{

private void method(){

//方法体内容

}

}

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

2、接口的实现类必须重写(实现)接口当中的所有抽象方法。

实现:去掉abstract关键字,“;”换成“{ }”,即添加方法体内容

3、 创建实现类的对象,进行使用。

注意事项:如果实现类中并没有实现接口中的所有抽象方法,那么这个实现类自己必须是一个抽象类。

四、基本实现

实现的概述: 类与接口的关系是实现关系,即类实现接口,该类称为接口的实现类也可以称为接口的子类。实现的动作类似于继承,格式相仿,只是关键字不同,实现使用implements关键字。

  • 非抽象类实现接口,必须重写接口中的所有抽象方法;
  • 实现类继承了接口当中的默认方法,既可以直接调用,也可以重写。

public class 实现类 implements 接口名称{

//重写接口当中的所有抽象方法

//重写接口当中的默认方法(可选)

}

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

抽象方法的使用:必须全部实现

//定义一个接口

public interface Biological{

//定义一个吃东西的功能

public abstract void eat();

//休息

public abstract void sleep();

}

//定义一个实现类

public class Animal implements Biological{

@Override

public void eat(){

System.out.println(“吃东西”);

}

@Override

public void sleep(){

System.out.println(“睡觉”);

}

}

//定义测试类

public class InterfaceDemo01{

public static void main(String []args){

//创建子类对象

Animal ani=new Animal();

//调用重写之后的方法

ani.eat();

ani.sleep();

}

}

//输出结果

//吃东西

//睡觉

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

默认方法的使用:可以继承,也可以重写,二选一,但是只能通过实现类的对象来使用。

1、 继承默认方法

public interface Biological{

public default void fly(){

System.out.println(“天上飞”);

}

}

//定义实现类

public class Animal implements Biological{

//继承 什么也不写,直接调用

}

//定义测试类

public class InterfaceDemo02{

public static void main(String []args){

//创建子类对象

Animal ani=new Animal();

//调用默认的方法

ani.fly();

}

}

//输出结果

//天上飞

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

2、重写默认方法

public interface Biological{

public default void fly(){

System.out.println(“天上飞”);

}

}

//定义实现类

public class Animal implements Biological{

//重写

@Override

public void fly(){

System.out.println(“自由自在的飞”);

}

}

//定义测试类

public class InterfaceDemo02{

public static void main(String []args){

//创建子类对象

Animal ani=new Animal();

//调用默认的方法

ani.fly();

}

}

//输出结果

//自由自在的飞

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

静态方法的使用

静态一般是和类.class文件相关,我们只能使用接口名来调用,不可以通过实现类的类名,或者是实现类的对象来调用

public interface Biological{

public static void run(){

System.out.println(“跑”);

}

}

public class Animal implements Biological{

//无法重接静态方法

}

public class InterfaceDemo{

public static void main(String []args){

Biological.run();

}

}

//输出结果

// 跑

私有方法的使用

  • 私有方法:只有默认方法能使用;
  • 私有静态方法: 默认方法和静态方法可以使用。

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

如果一个类中有多个默认方法,并且方法中有重复的内容,那么可以抽取出来,封装到私有方法当中,供默认方法去调用,从设计的角度考虑,私有的方法是对默认方法和静态方法的一种辅助。

//定义一个接口

public interface Biological{

private void run1(){

System.out.println(“撒旦撒旦撒”);

}

public default void funMethod1(){

// System.out.println(“撒旦撒旦撒”);

run1();

}

public default void funMethod2(){

// System.out.println(“撒旦撒旦撒”);

run1();

}

}

五、各种重名及解决方案

1、抽象方法

接口中有多个抽象方法,实现类必须重写所有抽象方法,如果方法重名,只需要重写一次即可。

//定义多个接口

public interface Animal{

public abstract void eat();

public abstract void run();

}

public interface human{

public abstract void eat();

public abstract void run();

}

//定义实现类

public class People implements Animal{

@Override

public void eat(){

System.our.println(“吃东西”);

}

@Override

public void run(){

System.our.println(“跑”);

}

}

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

2、默认方法

接口中有多个默认方法,实现类都可以继承使用默认方法,如果默认方法有重名,必须重写一次。

public interface A{

public default void methodA(){

}

public default void method(){

}

}

public interface B{

public default void methodB(){

}

public default void method(){

}

}

//定义一个实现类

public class C implements A,B{

@Override

public void method(){

System.out.println(“method方法被重写”);

}

}

3、静态方法

接口中,如果存在重名的静态方法并不会发生冲突,因为是只能通过各自的接口名访问静态方法。

六、优先级的问题

当一个类继承了一个父类,又实现了多个接口,父类中的成员方法与接口中的默认方法重名,那么子类就近选择执行父类的成员方法。

public interface A{

public default void methnodA(){

System.out.println(“AAAAAAAA”);

}

}

//定义父类

public class D{

public void methodA(){

System.out.println(“DDDDDDDD”);

}

}

//定义子类

public class E extends D implements A{

//未重写methodA()方法

}

//测试类

public class Test{

public static void main(String []args){

//创建子类对象

E e=new E();

e.methodA();

}

}

//输出结果

//DDDDDDDD

七、接口的多继承

一个接口能继承一个或者多个接口,这和类之间的继承关系比较相似,extends关键字,子接口继承父接口的方法,如果父接口中默认方法有重名,那么子接口需要重写一次。

public interface A{

public default void method(){

System.out.println(“AAAAAAAA”);

}

}

public interface B{

public default void method(){

System.out.println(“BBBBBBB”);

}

}

//定义子接口

public interface C extends A ,B{

@Override

public default void method(){

System.out.println(“CCCCCCCC”);

}

}

备注: 子接口重写默认方法,default保留。

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

其他成员特点

  • 接口中无法定义成员变量,但是可以定义常量,因为值不可变,默认使用public static final修饰
  • 接口当中没有构造方法,不能创建对象
  • 接口当中,没有静态代码块

接口的好处

  • 设定规则
  • 降低耦合性
  • 拓展原来类的功能

八、接口和抽象类的区别

相同点

  • 都包含抽象方法;
  • 其子类都必须重写这些抽象方法;
  • 都不能自己实例化对象;
  • 都位于继承的顶端,用于被其他类实现或者继承。
【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

不同点

  • 抽象类可以包含成员方法,接口不能包含普通成员方法;
  • 一个类只能继承一个直接父类(可以是抽象类),一个类也可以实现多个接口;
  • 类与类之间是单继承关系,接口与接口之间是多继承关系;
  • 抽象类可以定义普通成员方法,接口只能定义常量。

本文对于Java中接口的相关问题做了详细的讲解,你学会怎么使用接口了吗?今天就先讲到这里了,更多Java基础知识持续更新中,欢迎一起学Java!

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

我们下期再见!

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

END

文案编辑|云端学长

文案配图|云端学长

内容由:云端源想分享

【实战技巧】轻松掌握接口的使用方法,让你成为Java高手!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/30172.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信