Java面向对象8——接口(内含IDEA中有关创建接口的创建说明)

简介: 上一次我们说了抽象方法的存在是因为父类可以抽取子类中的共性方法,但是共性方法内实现方法不同所以要将共性方法写成抽象方法,那么如果子类中有一个“另类”不需要这个方法的话,我们就无法使用抽象方法了,而是要使用接口,哪个子类需要用,就继承该接口

一、前言


上文讲述了有关抽象类和抽象方法的知识点,本文会讲解有关接口的知识点


二、概述


上一次我们说了抽象方法的存在是因为父类可以抽取子类中的共性方法,但是共性方法内实现方法不同所以要将共性方法写成抽象方法,那么如果子类中有一个“另类”不需要这个方法的话,我们就无法使用抽象方法了,而是要使用接口,哪个子类需要用,就继承该接口


三、简单记忆


例如还是有三个人ABC,工作都是程序员,到了中午吃饭的时候了,A和B都去干饭了,但是C说不行我不吃饭,敲代码使我快乐,存在子类不调用该抽象方法的情况时,那么此时无法将“吃”提取到父类做抽象方法了,但是如果写两变一样的代码又使得代码不简洁,那么将吃定义为接口,有这个行为的子类就去执行接口


四、代码格式


1.格式


interface 接口名称{
    // 抽象方法
}


2.示例


public interface Eat {
    public abstract void eat();
}


3.IDEA创建接口


首先依然先创建模块,再创建包,再包下新建类


d43e4e6a27924548bfdf1f8905528671.png


一般我们创建类选择第一个Class,如果 要创建接口要选择第二个Interface


3f7460e45a8a412184a7f1bff8e65e54.png


可以看到我们就成功创建了一个接口


f5fce14e2dc344e883d5ae221bae52da.png


接口的图标和class是不同的,我们放大看一下,有这个标志意味着创建成功


744c15653c3546228829fc686549fafc.png


五、成员特点


1.成员变量


  • 只能是常量
  • 默认修饰符:public static final


2.构造方法


无构造方法


3.成员方法


  • 只能是抽象方法
  • 默认修饰符:public abstract


六、接口的实现


1.概述


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


2.格式


使用 implements 关键字


class 类名 implements 接口1,接口2,接口3...{
}


3.注意点


1.必须重写实现的全部接口中所有抽象方法


2.如果一个类实现了接口,但是没有重写完全部接口的全部抽象方法,这个类也必须定义成抽象类


我们用IDEA来演示一下


8cc24dbef0f4428d985196d4094ca75c.png


IDEA给出了我们两个解决方案:要么将该类变为抽象类,要么实现接口(Inter)中的方法


96540004f45f480f883d739f7db5b8f7.png


我们选择实现方法


3fc96bfc186d4d9ebf11f5b1d099c8cc.png


可以看到,要实现接口中的方法才可以,这也是我们常用的解决方法


七、使用说明


1. 接口不能实例化


5e8e71bdd81442d1bcc0440070c62a9a.png


可以这么理解:接口代表的是某一种状态,而不是个体,如果实例化,代码会报错

我们来看IDEA给出的解决办法


cf50488703e94c7286c05dc905f65fc0.png


这里的实现方法是后面会讲到的匿名内部类知识点,暂时先了解一下即可


2. 接口的子类


接口的子类要么是抽象类,要么重写接口中所有的抽象方法,这一点和上文讲到的抽象类很相似,可以点击链接查看上一篇文章【Java面向对象8——抽象类和抽象方法(知识点+使用方法)】


3.类和接口的实现


类与接口之间的关系是多实现的,一个类可以同时实现多个接口


public class Student extends Person implements Study , Exercise{
    public Student(String name, int age) {
        super(name, age);
    }
    @Override
    public void study() {
        System.out.println("学生要学习");
    }
    @Override
    public void exercise() {
        System.out.println("学生要锻炼身体");
    }
}


4.接口与接口的多继承


接口继承接口就是把其他接口的抽象方法与本接口进行了合并


public interface LearnCoding {
    void coding();
    void test();
}
public interface LearnMath {
    void exercise();
    void test();
}
public interface Student extends LearnCoding ,LearnMath  {
    void test();
}


八、思考题


读者可以思考一下然后在评论区写出自己的答案,标准答案会在下一篇文章中公布


如果一个接口中,有10个抽象方法,但是我在实现类中,只需要用其中一个,该怎么办?


九、结语


接口的使用非常广法,在实际开发中也很重要,如果想要检测一下自己的学习成果可以阅读这两篇文章(含图解)

【基础版练习:Java练习题——抽象类、方法以及接口】

【进阶版练习:Java练习题——接口和抽象类综合题】

相关文章
|
5天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
25 6
|
5天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
15 2
|
14天前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
50 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
7 3
|
1天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
14 6
|
1天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
8 2
|
1天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
8 2
|
1天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
8 1
|
2天前
|
Java 数据处理
|
2天前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
9 1