你是怎样看待java中的interface和abstract class的?
程序员文章站
2022-04-16 20:22:28
...
在java中,interface和abstract class都是为了“面向接口编程而不是面向实现编程”而设计的,但是在java中他们的关系和各自的优缺点是什么呢?
1.如你所知,在java中只支持单extends,但是可以implements多个interface,所以如果你的类 extends了一个abstract类,就是去了extends其他抽象类的机会了。
2.interface是用来表示行为的,如Clonable,Runnable,Serializable等,如果你用abstract class表示行为,那你的类就不肯能同时具有Clonable和Runnable的行为了,因为java语言只支持单 继承。
3.如果对性能有很苛刻的需求,一般抽象类略快于接口。
4.如果有某个具体的行为在其子类里都需要实现,且其实现方式是一样的,那么一般使用抽象类的方式, 比如模板设计模式就是这样一个很好的例子,在抽象类里定义了算法的骨架,算法里需要的每个方法有不 同的子类实现。一般接口和抽象类可以组合使用,一般接口的默认实现都是抽象类,这样的运用在 spring框架里有很多运用。
5.接口里的变量只能是public final或public static或public final static(这是接口里默 认的变量修饰符),其方法都是抽象方法,而抽象类没有这个限制。
6.其他欢迎补充
推荐阅读
-
PHP中的 抽象类(abstract class)和 接口(interface)
-
PHP中的 抽象类(abstract class)和 接口(interface)
-
Java中abstract和interface的区别
-
Java中abstract和interface的区别
-
认为 Java 和 .NET 是 Web 主流的人怎样看待国内 90% 网站均为 PHP 开发的事实?
-
认为 Java 和 .NET 是 Web 主流的人怎样看待国内 90% 网站均为 PHP 开发的事实?
-
Java中class是如何加载到JVM中的(Class.forName("name")和ClassLoader.loadClass("name")的区别)
-
[转载]PHP中的 抽象类(abstract class)和 接口(interface)
-
PHP中的Abstract Class和Interface_PHP教程
-
PHP中的Abstract Class和Interface