接口的属性

接口的特性:

接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。

接口中的方法都是公有的。

编译时自动为接口里定义的方法添加public abstract修饰符

Java接口里的成员变量只能是public static final共同修饰的,并且必须赋初值,可以不写public static final,编译的时候会自动添加

 

接口可以用两方面概述:

一方面,有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。所以有了接口,就可以得到多重继承的效果。

 

另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,只是具有相同的行为特征而已。比如说:鼠标、键盘等,都支持USB连接。

 

其实接口可以看成是一种规范,定义的是一组规则。就像继承是一个“是与不是”的关系,而接口实现的则是“能与不能”的关系

 

接口,其英文为interface,在Java中是个抽象类型,是抽象方法的集合。虽然编写接口的方式和类很相似,但接口并不是类,它们属于不同的概念。类描述对象的属性和方法,而接口则包含要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

 

接口是不能定义构造器的,这就意味着不可实例化,所以在Java开发中,接口通过让类去实现(implements)的方式来使用
如果实现类覆盖了接口中的所有抽象方法,则该实现类就可以实例化

如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类

 

那么接口是否可以被继承呢?

答案是可以的

类和类之间的关系有继承,接口和接口之间也可以继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。

接口的继承使用extends关键字,子接口 继承父接口的方法。

而且接口允许多继承

 

下面用“猫”的行为特征,作为简单的接口,方便理解一下

首先,用interface接口定义其行为特征,比如:爬树,吃,捕猎,奔跑等

再实现方法:

然后在主方法中调用:

输出结果:

当然爬树,吃,捕猎,奔跑等行为特征,豹子也具备

所以接口中的方法是公有的

 

 

其实有个类和接口很相似,它同样不能实例化对象;同样位于继承的顶端,用于被其他类实现或继承;同样包含抽象方法,其子类都必须覆写这些抽象方法

它就是:抽象类

 

它们的区别在于:

抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;

而接口只能包含抽象方法;一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

抽象类是这个事物中应该具备的内容, 继承体系是一种 is-a关系;

接口是这个事物中的额外内容,继承体系是一种 like-a关系

二者的选用:

优先选用接口,尽量少用抽象类;

需要定义子类的行为,又要为子类提供共性功能时才用抽象类;

要实现的方法不是当前类族的必要,而是扩展,用接口。

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值