面向对象--接口

1 接口(interface)的定义

在这里插入图片描述
接口内部只能定义常量和抽象方法。
(1)在接口中所有的变量:静态常量(static final)
(2)在接口中的所有方法:抽象方法(public abstract)
接口中定义的方法不能有方法体,默认是public abstract。接口中定义的变量是常量,默认是public static final。即public static final 和public abstract都可以省略不写。因为接口中代码格式是固定的,jvm在编译时会自动添加上这些关键字。
实现类命名规范:在要实现的类后面加Impl。

2 接口的特点

(1)接口不能创建对象(抽象方法),即也不能有构造方法
(2)子类(实现类)要重写接口中所有抽象方法之后,子类才能够实例化。否则子类会继承某个抽象方法,该子类依旧是抽象类。
(3)接口与接口之间继承关系,接口之间可以多继承
在这里插入图片描述
(4)类和类之间是继承(is a)的关系,类和接口之间是实现(like a)关系。
class subDemo extends Demo{}类与类之间是继承
class DemoImpl implements Demo{}类与接口之间是实现

3 接口的用处

(1)java不直接支持多继承,但是接口的出现解决了多继承的弊端(其实核心原因就在于多继承父类中的方法有主体内容,且继承可以不重写父类代码体,子类调用方法会产生不确定性)。
在这里插入图片描述
解决方案——多实现
当实现类去重写方法,并且创建对象去调用方法时,不会产生冲突。接口能够解决就在于接口中的方法都没有方法体,由实现类去明确的方法体的具体内容。
总结:类与类之间是单继承,类与接口可以多实现。
(2)一个类可以同时单继承,多实现
在这里插入图片描述
一个类继承的类可以不进行重写就可以调用父类,因此一般继承的父类都是一些基础功能。类比于电脑的主机。
而多个实现所完成的就是对基础功能的扩充,为类添加一下其他小型功能。类比于电脑的各个插口。
总结:父类里面定义的所有东西都是基本的功能,接口中定义的都是扩展功能。

4 接口的好处

(1)接口的出现避免了多继承的弊端
(2)接口是用来对功能进行拓展,接口的出现定义了规则。类比于电脑上接口,只有对应的接口才能插进去。
(3)接口的出现降低了耦合性(事物的紧密联系程度)。接口可以提前定义各种功能,需要什么功能就调用什么功能。
接口的出现,完成了解耦。说明有两方,一方在使用这个规则,另一方在实现这个规则。比如笔记本电脑在使用这个规则,外围设备在实现这个规则。

5 接口与抽象类的区别

在这里插入图片描述
类和接口的区别:
(1)类是在描述事物的基本功能,基本属性
(2)接口是负责对这个事物进行功能性的扩展
抽象类和接口的区别
(1)定义的方法上
接口负责功能的扩展,只能是抽象方法。
抽象类是描述事物的基本功能,可以有抽象方法也可以有普通方法
(2)定义的变量上
接口中定义的变量都是常量
抽象类中可以有常量,也可以是变量
(3)构造方法上
接口中不能有构造方法,即接口不可以实例化
抽象类中可以有构造方法。继承抽象类的子类是可以实例化的,此时super指向抽象类的构造方法。
(4)继承或实现上
接口可以多实现,并且继承多个接口
抽象类只能单继承

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值