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

相关文章
|
4月前
|
消息中间件 缓存 前端开发
从资损百万到零事故:Java 接口幂等设计的艺术与实践
在分布式系统中,重复请求常引发严重资损,如支付双扣、库存超卖等问题,其根源在于接口缺乏幂等性设计。本文通过真实案例揭示幂等性的重要性,并详解8种主流解决方案,涵盖唯一请求ID、乐观锁、悲观锁、状态机等,帮助开发者构建稳定系统,保障业务一致性。无论你是架构师还是开发工程师,都能从中获得实战指导,有效规避重复调用带来的风险。
290 2
|
4月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
3月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
141 11
|
2月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
209 0
|
3月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
150 1
|
4月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
264 23
|
4月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
245 12
|
3月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
127 0
|
4月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。