「这是我参与2022首次更文挑战的第26天,活动详情查看:2022首次更文挑战」。
接口和抽象类的区别
- 抽象类可以存在普通成员函数,而接口中只能存在public abstract方法,或者default方法。
- 抽象类中的成员变量可以是各种类型的。
- 抽象类只能继承一个,而接口可以实现多个。
设计目的
接口的设计目的:
是为了对类的行为进行约束,限制和规定类所拥有的行为。但是这只是限制行为的有无。接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,接口的编写方式和类很相似,但是它们不是相同的概念。类描述对象的属性和方法。接口则关注于接口的行为(方法)。
抽象类的设计目的:
首先是为了代码复用,也就是把一些类的一些相同行为的抽象出来作为抽象类中的已经实现了的方法,其他方法交给子类自己实现。这样就避免了一些代码的复用。就是抽象类中的抽象方法给子类去实现,而已经实现的方法就可以让子类直接使用而不用像接口一样也要实现。
其次是为了降低接口对类的要求,抽象类可以屏蔽接口对一些类的要求,使他继承的子类只要实现他的抽象方法就可以了。
形象的说,抽象类是模板,接口是要求。
使用场景
注重操作的要求的时候使用接口,关注事务的本质的时候使用抽象类。
抽象类功能超过了接口,但是定义抽象类的代价较高。因为java是单继承,所以抽象类需要写出要求子类所具有的所有抽象方法。而接口允许多继承则可以降低该难度。