大家都知道,java编程开发语言可以说是使用范围非常广泛的一种编程开发语言,今天我们就一起来了解一下,java编程开发中接口和抽象类的一些区别。

java接口 默认是抽象方法嘛 java接口是抽象类吗_java接口 默认是抽象方法嘛

1、接口

来看网络上对接口的一番解释:

接口(英文:Interface),在Java编程语言中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而来继承接口的抽象方法。

抽象类中的方法可以有方法体,能实现方法具体要实现的功能,但是接口中的方法不行,没有方法体。

抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstaticfinal类型的,并且是隐式的,缺省的。

接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类是可以有静态代码块和静态方法的。

一个类只能继承一个抽象类,而一个类却可以实现多个接口。

2、抽象类

抽象类体现了数据抽象的思想(不然呢),是实现多态的一种机制。抽象类定义了一组抽象的方法,至于这组抽象方法的具体表现形式由子类来继承实现。

抽象类就是用来继承的,否则它就没有存在的任何意义。

3、究竟什么时候使用接口,什么时候使用抽象类呢?

1、抽象类表示了一种“is-a”的关系,而接口表示的是“like-a”的关系。也就是说,如果B类是A,则A应该用抽象类。如果B类只是和A有某种关系,则A应该用接口。

2、如果要拥有自己的成员变量和非抽象方法,则用抽象类。接口只能存在静态的不可变的成员变量(不过一般都不在接口中定义成员变量)。

3、为接口添加任何方法(抽象的),相应的所有实现了这个接口的类,也必须实现新增的方法,否则会出现编译错误。对于抽象类,如果添加了非抽象方法,其子类却可以坐享其成,完全不必担心编译会出问题。

4、抽象类和接口有很大的相似性,请谨慎判断。Java从1.8版本开始,尝试向接口中引入了默认方法和静态方法,以此来减少抽象类和接口之间的差异。换句话说,两者之间越来越难区分了。