【从零开始学习JAVA | 第十八篇】接口介绍

这篇具有很好参考价值的文章主要介绍了【从零开始学习JAVA | 第十八篇】接口介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【从零开始学习JAVA | 第十八篇】接口介绍

目录

前言:

接口:

如何定义一个接口:

如何使用一个接口:

接口中成员的特点:

接口与类的区别:  

接口的应用:

总结:


前言:

        接口其实是为了弥补继承的缺点:我们无法让父类完美的适应每一个子类的要求例如我们有一个动物类的父类,有一个蝌蚪类,鱼类,兔子类。如果我们要在蝌蚪和鱼类里面添加一个游泳方法,但是父类中没有,此时我们只能够在鱼类里面实现一个游泳方法,在蝌蚪类里面提供一个游泳方法,这就又拉低了代码的执行效率,因此我们就创建了接口这个概念。

接口:

接口(Interface)是面向对象编程中的一个重要概念,它定义了一个类的外部形式,以定规范使用这个类的方式可以理解为一种约定,规定类能够提供哪些方法和属性。接口通常只包含方法的声明,而不包含具体实现。它们在编程中被用来描述一个或多个类应该支持哪些方法以及这些方法应该如何调用。

在Java中,接口是使用关键字“interface”来声明的。一个接口的方法必须在实现它的类中进行实现,否则编译器就会报错。在实现类中,需要使用“implements”关键字来实现接口的方法。

需要注意的是,一个类可以实现多个接口,但只能继承一个父类。这使得接口成为一种弥补java单继承限制的方式,通过实现多个接口可以获得多种特性。

总之,接口为我们提供了一种规范、高度抽象的编程方式,可以实现代码的灵活性和可扩展性。

其实换句话来讲:接口弥补了只能继承一个父类的缺点,为其他类提供了一个统一的功能函数。

回到刚才的例子,我们就可以创建一个游泳接口,让鱼类和蝌蚪类都使用这个接口,我们就实现了提高效率的目的。

如何定义一个接口:

1. 使用关键字 interface 创建接口。
2. 接口中可以声明常量和方法,但是不能声明成员变量和构造方法,接口中的方法不能有具体实现。
3. 通过接口中方法的声明,来规范类的使用方式。

下面是一个示例接口的定义:

public interface Animal {
    static final String TYPE = "animal";
    void run();
    void eat(String food);
}

如何使用一个接口:

1. 类通常必须实现接口中的所有方法才能使用该接口。
2. 使用关键字implements进行接口的实现。
3. 实现类必须覆盖接口中的所有方法,以提供具体的实现。

下面是一个示例实现类的定义:

public class Dog implements Animal {
    public void run() {
        System.out.println("我是一条狗,我会跑!");
    }
    public void eat(String food) {
        System.out.println("我是一条狗,我正在吃" + food);
    }

}

接口中成员的特点:

成员变量:
        只能是常量,默认修饰符是public static final。

构造方法:
         没有

方法成员:
          只能是抽象方法,默认修饰符:public abstract。

1. 接口中可以声明常量方法,但是不能声明具体实现
2. 接口中声明的方法必须在实现类中进行实现
3. 接口中声明的常量和方法默认为 public static finalpublic abstract 类型
4. 接口中可以包含 default static 方法的实现,这些方法允许在接口中提供默认实现,而无需实现它们的类进行实现。
5. 接口不能被实例化,但可以通过引用实现它的类类型来调用其中声明的方法或访问其中的常量。
6. 接口可以继承一个或多个父接口,继承后可以使用父接口中的方法和常量。

接口与类的区别:  

在面向对象编程中,接口与类是两个重要的概念。虽然它们有一些相似之处,但它们之间也存在一些区别。

1. 继承关系:类可以继承另一个类,也可以实现一个或多个接口。但接口不能直接继承类,只能继承接口。一个类可以继承一个类,并实现多个接口。

2. 相似之处:接口与类都可以包含方法和属性。但是接口中的方法只有方法签名,没有方法实现;而类可以包含方法实现。

3. 区别:接口与类的最大区别是类有构造函数,而接口无法创建实例。此外,类可以定义变量,但接口只能定义常量,也就是 final 变量。另外,类可以使用 private 和 protected 变量,而接口只有 public 变量。接口定义的方法只能是 public abstract,而类可以定义各种类型的方法。接口继承接口时,可以使用 extends 关键字,类继承类时可以使用 extends 关键词,类实现接口时可以使用 implements 关键词。

因此,接口与类之间有一些相似之处,但是它们还是有很多区别。接口提供了一种规范,允许多种不同的实现,而类则提供了一个具体的实现。可以通过继承和实现接口的方式,使得代码更加灵活和可扩展。

JDK7以前:接口中只能定义抽象方法。

JDK8以后:接口中可以定义有方法体的方法。(默认,多态)

JDK9之后:接口中可以定义私有方法。

 这些新增特点都是为了方便接口升级。也就是在版本更新的时候新增接口方法。

接口的应用:

接口在面向对象编程中有很广泛的应用,具体包括以下几个方面。

1. 多态性:

通过接口的实现,实现了不同对象之间的多态性。可以将一个接口的实现传递给一个方法,这个方法可以处理所有实现了这个接口的类的对象。

2. 规范:

通过接口声明的方法,规范了类的使用方式,使得各个类在实现接口的方法时有一个明确的标准。

3. 组合:

通过同时实现多个接口,实现了类的组合。这种方式比类的继承更加灵活,可以在不同的情况下选择不同的组合方式。

4. 扩展:

通过新增接口中的方法,扩展了类的功能,同时不需要对类本身进行修改。使用这种方式可以实现类的开放-关闭原则。

5. 解耦:

接口的使用可以将代码解耦,实现了模块之间的独立性。在接口与实现类之间形成了一个中间层,使得实现类可以独立于接口的具体实现。

总之,接口是面向对象编程中非常重要的一种概念,通过使用接口可以提高代码的可读性、可维护性、可扩展性和可复用性。

总结:

        接口的出现补全了父类在继承时候的缺点,它独立出来了一个功能供子类使用,是父类与子类之间的一个中间层,大大降低了代码的耦合性。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

【从零开始学习JAVA | 第十八篇】接口介绍文章来源地址https://www.toymoban.com/news/detail-499277.html

到了这里,关于【从零开始学习JAVA | 第十八篇】接口介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从零开始学习JAVA | 第十五篇】 多态

    本篇我们来解释一下什么是多态关系,多态关系属于面向对象三大特征的最后一个,可以说面向对象的重点就在多态,因此我们要学好面向对象编程思想,就要学好多态。         Java中的多态是指 同一类对象在不同情况下可能表现出不同的形态和行为。 它包括了 方法重

    2024年02月10日
    浏览(42)
  • 【从零开始学习JAVA | 第十九篇】初识内部类

    内部类是类的五大成员。一个类的其他的成员分别是属性,方法,构造方法,代码块。本文将详细介绍什么是内部类,以及内部类的意义。 内部类(Inner Class)是 Java 中的一个特殊概念,它指的是 一个类定义在另一个类内部的类。 内部类可以访问外部类的成员,包括私有的

    2024年02月15日
    浏览(25)
  • 从零开始学习 Java:简单易懂的入门指南之JDK8时间相关类(十八)

    JDK8时间类类名 作用 ZoneId 时区 Instant 时间戳 ZoneDateTime 带时区的时间 DateTimeFormatter 用于时间的格式化和解析 LocalDate 年、月、日 LocalTime 时、分、秒 LocalDateTime 年、月、日、时、分、秒 Duration 时间间隔(秒,纳,秒) Period 时间间隔(年,月,日) ChronoUnit 时间间隔(所有单

    2024年02月11日
    浏览(27)
  • 【从零开始学习Redis | 第八篇】认识Redis底层数据结构(下)

    目录 前言:   ZipList: Ziplist的特性: QucikList: QuicList特征: SkipList: 跳表特征: RedisObijct:  小心得: 总结:           在现代软件开发中,数据存储和处理是至关重要的一环。为了高效地管理数据,并实现快速的读写操作,各种数据库技术应运而生。其中,Redis作为一种

    2024年04月12日
    浏览(38)
  • 二十三种设计模式第十八篇--责任链模式

    责任链模式是一种行为型设计模式, 它允许你将请求沿着处理者链传递,直到有一个处理者能够处理该请求为止。责任链模式将请求发送者和请求处理者解耦,从而使得多个处理者都有机会处理同一个请求。 该模式包含以下几个关键角色: 抽象处理者(Handler):定义了一个

    2024年02月15日
    浏览(36)
  • 【Python入门系列】第十八篇:Python自然语言处理和文本挖掘

    Python自然语言处理(Natural Language Processing,简称NLP)和文本挖掘是一门涉及处理和分析人类语言的学科。它结合了计算机科学、人工智能和语言学的知识,旨在使计算机能够理解、解释和生成人类语言。 NLTK(Natural Language Toolkit):它是Python中最受欢迎的NLP库之一,提供了丰

    2024年02月15日
    浏览(47)
  • 【从零开始学习JAVA | 第三十一篇】异常体系介绍

            本文我们将为大家介绍一下异常的整个体系,而我们学习异常,不是为了敲代码的时候不出异常,而是为了能够熟练的处理异常,如何解决代码中的异常。  我们就以这张图作为线索来详细介绍一下Java中的异常: 在Java中, Exception(异常)是一种表示非致命错误或异

    2024年02月15日
    浏览(52)
  • 第十八篇、基于Arduino uno,获取手势识别传感器的信号——结果导向

    说明:该传感器模块集手势识别和触摸检测功能于一体,提供0~30cm以内的可调检测范围。它可以检测 5 向触摸信号和 7 种手势:向左移动、向右移动、向前移动、向后移动、向上拉、向下拉、拉和移除。 说明:虽然手势识别传感器形态各异,但是原理和代码都是适用的。  

    2024年02月07日
    浏览(35)
  • 【从零开始学习JAVA | 第二十篇】常见API介绍 Math

    目录 前言:  MATH: Math类中的常用方法: 总结:                 本篇往后我们会详细介绍一些常用的API,今天我们介绍的是Math的常用方法。但是其实我们不需要记住所有的方法,在日常工作中自己学会查询API文档就可以了。 Math类是Java中提供的一个标准类, 它包含了许多

    2024年02月15日
    浏览(30)
  • 从零开始学习 Java:简单易懂的入门指南之抽象类&接口&内部类(十一)

    1.1.1 抽象类引入 ​ 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说,父类可能知道子类应该有哪个功能,但是功能具体怎

    2024年02月13日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包