Java:interface接口

interface关键字用于声明一个接口

1.接口如何定义

        修饰符列表 interface 接口名{ }

2.接口在java中表示一种规范或契约,它定义了一组抽象方法和常量,用来描述实现这个接口的类应该具有哪些行为和属性,接口也属于一种引用数据类型

3.抽象类是半抽象的,而接口是完全抽象的。接口没有构造方法,也无法实例化

4.在JDK8之前,接口中只能定义常量和抽象方法。修饰常量的static final可以省略不写,修饰抽象方法的abstract也可以省略不写,接口中所有的属性和方法都是public公开的(public也可以省略)

5.接口与接口之间不仅支持单继承,还支持多继承

6.类和接口之间的关系叫做实现,用implements来进行接口的实现

7.一个非抽象的类实现接口时,必须将所有的抽象方法全部实现

8.一个类可以实现多个接口,例如 class A implements interface B, interface C{ }

9.JDK8之后(包括JDK8),接口中允许定义默认方法和静态方法

        为什么出现这种新特性?

                引入默认方法是为了解决接口演变的问题:"接口可以定义方法,但不能实现方法,当一个类实现接口时,必须实现它的所有抽象方法",这就导致出现了接口升级的问题:"当接口删除或添加方法时,这会破坏所有类的实现,所有该接口的用户必须修改代码才能适应更改",这就是所谓的“接口演变”问题

                默认方法: 即使实现了该接口的类没有提供该方法的实现,也可以有默认的行为。默认方法使用default关键字来定义。

                静态方法:JDK8之后规定,接口中可以定义静态方法,但是这个静态方法只能通过"该接口名."去调用,别的都无法调用!

10.JDK9之后,接口中允许定义私有的实例方法和私有的静态方法

        私有实例方法主要用于辅助接口中的默认方法。它们不能直接被接口的实现类或外部类调用,只能被接口内部的默认方法,或其他私有方法调用

        私有静态方法主要用于辅助接口中的默认方法或静态方法。它们与私有实例方法类似,但不需要接口的实例即可调用。它们通常用于封装复杂的逻辑或实现工具方法。

11.所有的接口都隐式的继承Object类,因此接口可以调用Object类中的方法

12.当同时出现extends和implements时,extens在前,implements在后

        例如 class A extens B implements C

13.接口之间即使没有继承关系,也可以进行转型,但是运行时可能会出现ClassCastException,要用instanceof运算符进行判断

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梅清琳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值