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练习题——接口和抽象类综合题】

相关文章
|
20小时前
|
Java 程序员
Java中的多线程编程:理解并应用Thread类和Runnable接口
【5月更文挑战第28天】在Java中,多线程编程是一个重要的概念,它允许同时执行多个任务。本文将深入探讨Java的多线程编程,包括Thread类和Runnable接口的使用,以及如何在实际项目中应用这些知识。我们将通过实例来理解这些概念,并讨论多线程编程的优点和可能的挑战。
|
1天前
|
Java 程序员
Java多线程基础-16:简述Java并发编程JUC中的Callable接口
Callable接口是Java中用于描述带有返回值任务的接口,与Runnable相对,后者无返回值。Callable的call()方法用于执行具体任务并返回结果。
11 0
|
1天前
|
Java 编译器
Java抽象类和接口
Java抽象类和接口
|
1天前
|
安全 Java 编译器
Java面向对象之——多态
Java面向对象之——多态
|
1天前
|
Java 程序员 编译器
Java面向对象之——继承
Java面向对象之——继承
|
1天前
|
存储 Java 编译器
Java面向对象之——封装
Java面向对象之——封装
|
1天前
|
Java
Java程序设计实验3 | 面向对象(上)(二)
分数的分子和分母用两个整型数表示,类所拥有的方法包括对分数进行加、减、乘、除等运算,以及输出分数的方法,输出分数的格式应该是:分子/分母。
10 0
|
1天前
|
Java
Java程序设计实验3 | 面向对象(上)(一)
实验目的是理解和掌握面向对象编程的基本概念,包括类的声明、实例化和调用,方法及构造方法的定义,方法重载,值传递和地址传递,以及使用this关键字和static关键字。
11 0
|
1天前
|
Java
<Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法...
<Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法
7 0
|
4天前
|
设计模式 算法 Java
Java语言中的接口技术深入解析
Java语言中的接口技术深入解析
214 0