决胜春招(四)——抽象类与接口|技术点评

155 阅读1分钟

一个类中有一个或多个抽象方法,那他就是抽象类

Java8以前,接口里面都是抽象方法

单纯从代码上看,这是最简单的分辨方式了。

接口被设计成为like-A,而抽象类则是is-A,

因此接口是可以多继承的。 接口被用来建立类之间的协议,接口可以包含属性(被隐式指定为static和final) ,Java8以后,default关键字让接口可以拥有方法

看起来抽象类和接口又混合成为一个东西了

区别

特性接口抽象类
继承多继承单继承
状态不包含属性可以包含属性,类中非抽象方法可以用这些属性
默认方法和抽象方法不需要子类中重复实现默认方法,默认方法可以引用其他接口方法必须在子类中实现抽象方法
构造器无构造器有构造器也不能实例化
可见性隐性public可以是protected或者友元

如果我们将一个抽象的方法理解成接口,似乎就能更好地理解两者的关系,抽象类是接口和其他方法的组合(不是)

多继承带来的问题——方法重名

这个问题可以通过重写重新设计方法或者指定某个方法来解决

methid(){
Interface2.super.method();
}

本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情