java 基础接口

java 基础接口interface 引用数据类型 类 数组 接口 1 接口概述 接口是对 Java 单继承的补充 Java 只支持单继承 亲爹唯一 如果在开发过程中想额外增强类的功能 可以借助接口实现 可以拜师 拜多个师傅也可以 接口是 Java 中一种重要的抽象机制

大家好,我是讯享网,很高兴认识大家。



interface

引用数据类型:类、数组、接口

1 接口概述

接口是对Java单继承的补充。Java只支持单继承(亲爹唯一),如果在开发过程中想额外增强类的功能,可以借助接口实现(可以拜师,拜多个师傅也可以)。

接口是Java中一种重要的抽象机制,它提供了一种定义行为规范和实现多态性的方式。通过合理使用接口,可以提高代码的可扩展性、可维护性和灵活性。

接口是除了类和数组之外,另外一种引用数据类型,需要使用 关键字来定义,接口最终也会被编译成,但一定要明确接口并不是类,而是另外一种引用数据类型。

接口基础定义格式:

 
讯享网 

案例如下:

讯享网

注意1, 定义类使用关键字,定义接口使用关键字

注意2,接口中的数据成员,默认修饰,是常量,名称全大写(符合命名规范)

注意3,接口中的方法,默认修饰,是抽象方法

补充内容(后面章节具体讨论):

  • JDK8中,还允许在接口中编写静态方法默认方法
  • JDK9中,还允许在接口中编写私有方法

2 接口实现

Java中类和类之间的关系是继承,且只能是单继承

类和接口是实现关系,通过implements关键字表示,可以是单实现,也可以是多实现

子类还可以在继承一个父类的同时实现多个接口

接口的实现类书写格式:

 

注意事项:

  • 接口属于引用数据类型的一种,它不是类,它没有构造方法
  • 接口的实现类(子类),可以是正常类(重写所有抽象方法),也可以是抽象类(包含抽象方法)
  • 接口不能创建对象,一般用接口引用指向实现类对象
  • 相同接口的多个实现类,体现的是的关系

基础案例:

​ 实现类实现单个接口案例。

​ 定义IAction的实现类,重写所有抽象方法,最后进行功能测试。

讯享网

注意事项:

​ 在类和接口的实现关系中,可以使用多态 ,因为类和接口的实现关系,可理解为继承的一种形式。

一个类可以同时实现多个接口 ,但需要把多个接口的抽象方法全部重写(后面案例中具体演示)。

3 接口继承

Java中,类和类之间是单继承关系,接口和接口之间是多继承

接口继承格式:

 

例如:

 

4 综合案例

案例描述:

​ 定义一个抽象父类Animal2,再定义两个接口IJumpAble跳火圈、ICycleAble骑自行车,最后定义一个猴子类Monkey,去继承Animal2,同时实现IJumpAble、ICycleAble,进行功能测试。

java 基础接口

复杂实现类定义格式:

 

案例描述:

 

运行效果:
在这里插入图片描述

注意事项:

接口多态应用时,编译看左边,运行看右边

即接口引用只能调用接口中包含的方法,成功调用的是重写以后的方法

5 类接口关系

  • 类与类的关系

    继承关系,只能单继承,但是可以多层继承

  • 类与接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  • 接口与接口的关系

    继承关系,可以单继承,也可以多继承

2.6 接口新特性

1)JDK8新特性:接口可以包含静态方法和默认方法

案例如下:

 

注意事项:JDK8接口可以定义static方法,只能通过接口名调用

2)JDK9新特性:接口可以包含私有方法

案例如下:

 

注意:测试上述案例需要用合适的JDK版本

7 常见面试题

接口和抽象类有什么区别?如何选择?

语法上两者区别:

  1. 定义方式:抽象类通过使用 abstract 关键字来定义,而接口使用 interface 关键字来定义
  2. 数据成员:抽象类可以包含普通数据成员和static数据成员,而接口只能包含 static final 修饰的数据成员
  3. 成员方法:抽象类可以包含具体的方法实现,而接口只能包含抽象方法,即没有方法体的方法声明
  4. 构造函数:抽象类可以有构造函数,而接口不能有构造函数
  5. 实现方式:一个类可以继承(extends)一个抽象类,而一个类可以实现(implements)多个接口
  6. 多继承:Java不支持多继承,一个类只能继承一个抽象类,但可以实现多个接口

设计理念区别:

  • 同一个接口的不同的实现类之间,体现的是 的关系 ,接口更加强调行为规范的定义,适用于多个类具有相同行为规范的情况。

    例如:飞机具备飞翔的行为,鸟也具备飞翔的行为,此时我们就可以定义接口包含抽象方法fly(),然后让飞机和鸟分别去实现该接口。飞机 鸟,因为它们都会fly()。

  • 子类和抽象父类体现的是 的关系 ,抽象类归根到底还是类,它比较特殊,不能被实例化,只能被继承。抽象类用于定义一种通用的模板或者规范,其中可包含了一些具体数据成员、方法实现和抽象方法声明。

    例如:前面案例中的形状类Shape,它里面包含方法getArea(),但该方法功能不确定,所以定义成抽象方法,而包含了抽象方法的类Shape也必须被声明为抽象类。定义子类圆形类,其getArea()方法功能是明确的,则子类中重写方法。

小讯
上一篇 2024-12-26 19:57
下一篇 2025-01-02 20:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2633.html