java基础课程笔记整理Chapter8——接口

本文详细解析Java的单继承特性,介绍了接口的定义、使用、继承,强调了接口变量、回调机制和多态性。对比了接口与abstract类的区别,并提倡面向接口编程,探讨了何时选择接口而非抽象类,以及开发中如何利用接口遵循'开闭原则'。
摘要由CSDN通过智能技术生成

java的单继承性

Java不支持多继承,即一个类只能有一个父类,单继承性使得Java简单,易于管理和维护。Java的接口更符合人的思维方式。(eg计算机实现了鼠标接口,计算机实现了USB接口而不是计算机是鼠标,计算机是USB)

接口的定义

使用关键字interface来定义一个接口,接口的定义包括接口的声明和接口体。
接口声明,格式:interface 接口的名字
接口体中包括常量的声明和方法的定义。接口体中只有常量,没有变量,且常量都是public final static (允许省略这些修饰符)。接口体中只有抽象方法,没有普通方法,且方法都是 pubic abstract(允许省略这些修饰符)

接口的使用

在Java语言中,接口由类去实现以便使用接口中的方法。类通过关键字implements声明自己实现一个或多个接口,多个接口的话用逗号隔开接口名。如果一个类实现了某个接口,那么这个类必须重写这个接口中的所有方法。
注意:
1. 接口中的方法是public abstract ,则重写接口中的方法时,要去掉abstract给出方法体,public不能省略,否则方法的访问权限就被降低了。
2. 实现接口的类重写接口中的方法也称为这个类实现了接口中的方法。
3. Java提供的接口都在相应包中,因此,import语句不仅能引进包中的类还能引进包中的接口。我们也可以自己定义接口,一个Java源文件就是由接口和类组成的,编译生成的字节码文件是.class。
4. 类重写的接口方法以及接口中的常量不仅可以被类的对象调用,而且常量可以用类名或接口名直接调用
5. 如果一个父类实现了某个接口,那么子类就自然实现了该接口,子类不必显式地使用implements声明这个接口。
6. 如果一个类声明实现某个接口,但没有重写接口中的所有方法,那么这个类必须是abstract类。
7. 接口声明时,如果interface前面加上public修饰,则说明这个接口是一个public接口。public接口可以被任何一个类实现。如果一个类不加public修饰,那么这个接口就叫做友好接口,友好接口可以被与该接口在同一个包中的类实现。

接口的继承

接口也可以被继承,即使用关键字extends声明一个接口是另一个接口的子接口。由于接口中的方法和常量都是public的,所有子接口将继承父接口中的所有方法和常量。

理解接口

接口只关心操作,并不关心接口操作的具体实现,即只关心方法的类型,名称,但不关心方法的具体行为。实现同一个接口的两个类就会具有接口所规定的方法,但方法的内部细节(方法体的内容)可能不同

接口变量与回调机制

和类一样,接口也是Java中一种重要的数据类型。用接口声明的变量称为接口变量,接口变量属于引用型变量,接口变量中可以存放实现该接口的类的实例的引用。
接口回调:指可以把实现某个接口的类创建的对象的引用赋给这个接口声明的接口变量中,那么该接口变量就可以调用该类实现的接口方法。
接口变量无法调用类中的非接口方法。类似于上转型对象调用子类的重写方法。

接口的多态性

实现某个接口的类创建的对象的引用赋给这个接口声明的接口变量中,那么该接口变量就可以调用该类实现的接口方法。由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方法,那么接口变量在回调接口方法时就可能具有多种形态。

接口与abstract类的对比

1. abstract类和接口都可以有abstract方法,但是abstract类也可以有非abstract方法(还可以没有abstract方法),而接口中不能有非abstract方法
2 .接口中只有常量,不能有变量,而abstract类既可以有常量也可以有变量
在设计程序时应当根据具体的分析来确定时使用抽象类还是接口。
abstract类除了提供了重要的需要子类重写的abstract方法外,也提供了子类可以继承的变量和非abstract方法。如果某个问题需要使用继承才能更好地解决,就可以考虑用abstract类,如果某个问题不需要继承,只需要由类给出某些重要的abstract方法的实现细节,就可以考虑使用接口。

面向接口编程

接口只关心操作,而不关心这些操作的具体实现细节。也就是说,可以通过在接口中声明若干个abstract方法,表现这些方法的重要性,方法体的内容细节由实现接口的类去完成。使用接口进行编程的核心是接口回调,即接口变量中存放实现接口的类创建的对象的引用,从而接口变量就可以回调类实现的接口方法。
利用接口也可以体现程序设计的“开-闭原则”,即对拓展开放,对修改关闭。

补充

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yun_gao_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值