一文真正学懂java接口

简介: 1.概述接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。


1.概述


接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。


接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。


除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。


接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。


接口的声明语法格式如下:


[可见度] interface 接口名称 [extends 其他的接口名] {
        // 声明变量
        // 抽象方法
}


类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

实现一个接口的语法,可以使用这个公式:


...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...


2.接口使用


首先,定义一个模拟usb的接口文件:


/**
 * 接口
 */
public interface UsbInterface {
    // 规定接口的相关方法,接口规范
    // 接口中定义抽象方法可以省略abstract关键字
    public void start();
    public void stop();
}


接着,模拟两个具体的实例,手机和相机:


/**
 * 实现手机📱接口
 */
public class Phone implements UsbInterface{
    @Override
    public void start() {
        System.out.println("📱开始连接...");
    }
    @Override
    public void stop() {
        System.out.println("📱中断连接...");
    }
}


/**
 * 实现相机📷接口
 */
public class Camera implements UsbInterface{
    @Override
    public void start() {
        System.out.println("📷开始连接...");
    }
    @Override
    public void stop() {
        System.out.println("📷中断连接...");
    }
}


实现一个计算机类,模拟手机和相机使用计算机的usb接口:


/**
 * 开始工作
 */
public class Computer {
    public void work(UsbInterface usbInterface) {
        // 通过接口调用方法
        // 这里可以体现多态思想
        usbInterface.start();
        usbInterface.stop();
    }
}


3.接口注意事项


接口可以有自己的属性和方法,接口的方法需要使用default或者static进行修饰:(接口的方法只能在jdk8之后进行使用)


public int n = 521;
default public void show() {
    System.out.println("我是接口的方法");
}
public static void hi() {
    System.out.println("你好啊");
}


接口在定义实现规则方面具有先天的优势,接口编程可以大大提高软件开发的质量和规范🎈


接口不能被实例化!


接口中所有的方法都是public方法🐱‍👓,所以在进行接口抽象方法定义时,无需声明abstract和pubilc


抽象类可以不用实现接口中的抽象方法😁


一个类可以同时实现多个接口,它同时需要重写所有接口的所有抽象方法


接口中所有的属性都是默认public static final修饰,这很重要


一个接口不能继承其他的类,但是可以继承其他的接口(接口和接口继承,类和接口是实现关系)


接口可以使用的修饰符和类一样,为public或者默认


接口和继承的区别:当子类继承父类就自动拥有父类的功能,如果子类需要扩展功能,可以通过实现接口的方式进行扩展🎁实现接口是对java单继承机制的一种补充


4.接口多态传递机制


实例:


/**
 * 接口的多态传递机制
 */
interface TextA {}
interface TextB extends TextA {}
class Teacher implements TextB {}


测试类:


// 接口的多态传递机制
// 接口类型的变量可以指向实现了该接口的类的对象实例
TextB textB = new Teacher();
// 如果TextB继承了TextA接口,而Teacher实现了TextB接口
// 那么实际上相当于Teacher类也实现了TextA接口
TextA textA = new Teacher();


莫道谗言如浪深,莫言迁客似沙沉。 千淘万漉虽辛苦,吹尽狂沙始到金🚀

目录
相关文章
|
7天前
|
运维 监控 算法
java实现一个动态监控系统,监控接口请求超时的趋势
java实现一个动态监控系统,监控接口请求超时的趋势
23 2
|
3天前
|
Java
Java Map.Entry接口详解
Java Map.Entry接口详解
|
7天前
|
Java
Java面向对象 ( 多态 | final关键字 | 接口 )
Java面向对象 ( 多态 | final关键字 | 接口 )
|
7天前
|
Java API 数据处理
Java中的Lambda表达式和函数式接口
【6月更文挑战第29天】在Java的世界里,Lambda表达式的引入标志着编程范式的一次革新。它不仅简化了代码,还提高了开发效率。本文将通过探索Lambda表达式的本质、优势以及如何与函数式接口协同工作,带领读者理解这一特性的强大之处。我们将从基础概念出发,逐步深入到实际应用,揭示Lambda表达式如何让Java代码更加简洁、灵活。
15 3
|
9天前
|
Java 开发者
Java中的Lambda表达式与函数式接口
【6月更文挑战第28天】在现代的Java编程实践中,Lambda表达式和函数式接口已经成为提升代码简洁性和可读性的重要工具。本文将深入探讨Lambda表达式的基本概念、语法结构以及如何与函数式接口结合使用,旨在帮助开发者更好地理解和运用这一特性,以编写出更加优雅和高效的Java代码。
|
12天前
|
Java API 开发者
探索Java中的Lambda表达式和函数式接口
【6月更文挑战第25天】在Java的世界里,Lambda表达式的引入标志着一种全新的编程范式——函数式编程。本文将通过深入解析Lambda表达式及其与函数式接口的结合使用,带领读者领略这一特性如何简化代码,提升开发效率。
|
16天前
|
Java
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
|
14天前
|
Java
Java中,有两种主要的方式来创建和管理线程:`Thread`类和`Runnable`接口。
【6月更文挑战第24天】Java创建线程有两种方式:`Thread`类和`Runnable`接口。`Thread`直接继承受限于单继承,适合简单情况;`Runnable`实现接口可多继承,利于资源共享和任务复用。推荐使用`Runnable`以提高灵活性。启动线程需调用`start()`,`Thread`直接启动,`Runnable`需通过`Thread`实例启动。根据项目需求选择适当方式。
23 2
|
16天前
|
Java API
java调用个人微信API接口收发朋友圈,删除评论朋友圈
java调用个人微信API接口收发朋友圈,删除评论朋友圈
|
17小时前
|
存储 并行计算 Java
深入理解Java中的Lambda表达式与函数式接口
深入理解Java中的Lambda表达式与函数式接口