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

相关文章
|
8天前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
57 6
|
7天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
28天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
37 6
|
28天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
32 2
|
8天前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
23 1
|
14天前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
41 4
|
20天前
|
安全 Java
在 Java 中使用实现 Runnable 接口的方式创建线程
【10月更文挑战第22天】通过以上内容的介绍,相信你已经对在 Java 中如何使用实现 Runnable 接口的方式创建线程有了更深入的了解。在实际应用中,需要根据具体的需求和场景,合理选择线程创建方式,并注意线程安全、同步、通信等相关问题,以确保程序的正确性和稳定性。
|
19天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
19天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
12 2
|
19天前
|
Java 测试技术 API
Java零基础-接口详解
【10月更文挑战第19天】Java零基础教学篇,手把手实践教学!
18 1