Java——接口

什么是接口?

有什么用?

怎么用?

有哪些特点?

下面听我一一道来。

一、什么是接口?

接口是行为的抽象,是一种规则,那个对象需要使用这种规则就去拿过来实现即可。

打个不太恰当的比喻,奥特曼看过吧?塞罗知道吧?塞罗当年想得到等离子火花塔的力量知道吧?假设,我说的是假设,假设等离子火花塔上有个接口,只要塞罗那个线咔嚓把自己和那个接口一连接上,哎,啪的一下,hei~快啊!塞罗就得到了等离子火花塔的力量了。

再假设,一个盒子,里面封印有绝世武功,盒子有个接口,你想要绝世武功,只要和接口连接上,你就能拥有绝世武功!那么绝世武功就在你身上实现了!是不是很像继承?没错,接口就是从继承体系里延申出来的技术。

构建一个简单的继承体系便于理解:

对于这个继承体系,游泳方法其他三个都要实现,而兔子类没有必要实现,就不能抽取到父类中,怎么办?于是就有了接口这个概念。写一个接口类,里面写上游泳方法,谁用谁继承即可。

不冲突,层次明朗,各司其职。这就是接口的作用。

二、接口与类之间的关系:

1、类与类的关系:继承关系,对于类与类的继承而言,只能单继承,但是可以多层继承

2、接口与类的关系:继承关系,继承了接口的类叫做实现类,用implements关键字实现。

      实现类可以实现多个接口,即implements 接口A,接口B.....

3、接口与接口的关系:

      也是继承关系,可以存在多层继承,有子接口和父接口。 

     但是如果要实现最底层的的子接口,那么就需要重写子接口以及其父接口的所有方法

三、接口类成员的特点:

1、成员变量:只能是常量

                        格式:public abstract final + 变量名;

2、无构造方法

3、成员方法:又分多种情况:

   (1)  原来的JDK7只支持写抽象方法

         抽象方法的

 (2) 后来的JDK8又能够支持可以拥有方法体的方法以及静态方法,前者叫做默认方法,用关键字default修饰;后者叫做静态方法,即用static修饰的方法

默认方法:

格式:public default 返回值类型 方法名(){ }

范例:public default void method( ){ ....}

注意:默认方法不是抽象方法,不需要强制重写;如果要重写,需要去掉default关键字

public可以省略不写,但是default不能省略

如果实现多个接口,多个接口中有重复的方法名字,实行类必须进行重写,因为在调用的时候我们不知道调用那个接口的方法,就会导致混乱

静态方法:

格式:public static 返回值类型 方法名字(){ }

范例:public static void method ( ) {  ......  }

注意:静态方法只能通过接口调用,而不能使用实行类名和对象调用

public可以省略,static不能省略

静态方法不是抽象方法,不需要强制重写,而且不能够被重写 

(因为只有能被继承的方法才能重写,而1静态方法是不能被继承的)

 (3) 再后来的JDK9又能够支持私有成员方法,至于为什么,后面再说。

  其中又分为私有的默认方法以及私有的静态方法。

私有默认方法:

格式: private 返回值类型 方法名(){......}

范例:private void method () { ...... }

私有静态方法:

格式:private static 返回值类型 方法名(){.....}

范例:private static 返回值类型 方法名(){.....}

可是,为什么呢?为什么要升级呢?

很简单,随着业务的复杂增加,随之也需要一些相应技术的升级。你想想,你用的APP或者游戏,王者农药隔三岔五就要升级不是吗?QQ都从最初的1.0版本已经升级到了现在的8.几版本了,而且还会再更新。看,这就是一个项目的生命力!试想,假设你写了一个程序,能用到几百年后,想像都刺激激动!因此,要跟进学习,持续不断的学习,才能不断的产出新的创造!

默认方法升级的原因:

设想一个情景:

有一个App1.0版本上线了,但是很快需要升级,要升级为App2.0版本。

随之有某一个接口需要进行功能丰富,需添加10个方法或者干脆更多,怎么办呢?直接加吗?

要知道,实现类必须重写接口中所有的方法。

如果直接加进去,那么原来继承了这个接口的所有实现类就会直接报错!

难道你要逐个找到继承该接口的实现类去一个一个改吗?不可能!直接崩了!

所有,为了解决这个问题,到了JDK8就推出了可以写方法体的默认方法。

即解决了接口新增功能的问题,也解决了新增后原来的实现类不报错的问题!

而这个默认的方法对于实现类不强制重写,也就是谁用谁重写,方便多了!

私有方法的原因:

那么,紧跟着上面的接口丰富,问题又来了,试想,如果接口的方法多了,难免会有几个方法会有重复的内容。这个时候怎么办呢?

一般情况下,我们会将重复内容抽取出来构造一个新的方法,那么当有方法需要这部分内容的时候,直接调用我们抽取的新方法就行了。

也就是说,这个方法是局限在这个接口类的,专门为着其他方法服务的新方法。即是说这个方法不能被其他类调用,就算调用也是无意义的。那怎么办才能保证安全呢?没错,就是限制其能被访问的范围,就是改变权限修饰符。

而哪一个权限修饰符只能被本类访问呢?

脑海里瞬间想到一个词:private!

这,就是私有方法的由来!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二十5画生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值