有些小伙伴在使用的时候,把抽象类和接口进行了混淆,因为它们都和类有所联系。考虑到初学java对于定义和作用的理解不够深刻,又或者在概念上没有系统的对比过,这里小编把它们的概念整理出来,并进行了分析对比。还没有弄清楚它们之间区别的小伙伴,可以看看下面的内容。
1.定义不同
类
类是具有相同属性和服务的一组对象的集合。为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务(功能)两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,应该有一个类名并包括属性说明和服务说明两个主要部分。
接口
接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合(接口里面都是抽象方法),接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
2.作用区别,以抽象类为例
1)语法层面上
接口中不能有 public 和 protected 修饰的方法,抽象类中可以有。
接口中的变量只能是隐式的常量,抽象类中可以有任意类型的变量。
一个类只能继承一个抽象类,但却可以实现多个接口。
2)设计层面上
抽象类是对类的一种抽象,继承抽象类的类和抽象类本身是一种 is-a 的关系。
接口是对类的某种行为的一种抽象,接口和类之间并没有很强的关联关系,所有的类都可以实现 Serializable 接口,从而具有序列化的功能。
二者的选择:
优先选用接口,尽量少用抽象类;
需要定义子类的行为,又要为子类提供共性功能时才选用抽象类
以上就是在java中关于接口和类的区分,鉴于类的模块比较大,我们挑选了具有代表性的抽象类进行比较,希望对大家有所帮助。更多Java学习指路:js教程