java接口学习_从零开始的Java学习记录(22)——接口与实现接口

24016ab1beef092d2f0f1e0ef7c78284.png内容概览

5a6248719eab539b6cda4d7ca48f5a7b.png

1.引用数据类型

之前有说过Java的基本数据类型共有8种,而引用数据类型几种则没有介绍,实际上引用数据类型只有3种,分别是:数组、类、接口。

前两种之前都有介绍过,今天来介绍3种引用数据类型的最后一种,接口。

8b22ab26ef493287a87a82da4f4b89c6.png

2. 接口

接口与抽象类有相似点,即一般都有抽象方法,但不同的是接口中的属性与方法有以下几点限制如想在接口中设置属性,但默认是被public static final修饰,且不能更改,即公开的静态常量,不过一般很少在接口中设置属性(作为初学者的我暂时还没遇到)。

接口中的方法一般为抽象方法,且默认为abstract public,且1.8版本之前是不能更改的。

1.8版本开始,接口中的方法可以为静态方法,abstract与static无法同时使用,因为abstract方法存在的目的就是被重写,而static方法却无法被重写(只能被隐藏),所以被static修饰的方法不能没有方法体。

1.8版本开始,还能被default(默认)修饰,在接口中被default修饰的方法同样不能抽象,这是为了在实现该接口的子类中有个不重写即可调用的默认方法,使代码有更好的维护性和扩展性。试想有成百个子类实现了一个接口,现在想在该接口中添加一个方法,成百个子类都重写吗,只要添加个default方法即可,需要重写的重写,不需要重写的默认。

aae14434020e8fe6cf8904c5ba1360cd.png接口

8b22ab26ef493287a87a82da4f4b89c6.png

3.接口的意义与实现接口

之前在继承一章中有提过,Java里只有单继承,而接口可以变相实现多继承。

举个例子,话说在某个异世界,人族(Human)与魔族(Demon)一同生活在东亚细亚大陆上,却势同水火,那么问题来啦,人族与魔族都有士兵与平民之分,人族士兵在继承人族这个父类的同时如何又继承士兵这个父类,这时我们可以让人族士兵继承人族这个父类又实现了战斗(CombatAble)这个接口,魔族同理。战场上只有实现了战斗(CombatAble)接口的才能进入,即人族士兵与魔族士兵,而人族城镇只有继承了人族(Human)父类可以进入,即人族士兵与人族平民。

254e1cc84658fe9749d647a701f68058.png类与接口

a70f36d33a717e5006595ca6c8c9339e.png实现接口

8b22ab26ef493287a87a82da4f4b89c6.png

4. 接口抽象类的异同

同:都不能被实例化

都可以有抽象方法,也可以没有抽象方法

子类可以向上转型为抽象类或接口

33431e1b7a5a95314b5be18398fadf5f.png相同点

异:继承为单继承,接口可以多个

接口无构造方法,抽象类有构造方法

如接口需设置属性只能有静态常量,抽象类属性不受限制

7523cffa0b31c65b0ad12baa7bd91c57.png不同点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值