开场白
老铁 :接口、抽象类、类——三位英雄执剑走天涯,行侠仗义,被誉为“Java帝国三剑客”。三位英雄从来都不会争强好胜,而是相互协助,发挥各自优势,共同打造Java帝国的强安全性与高健壮性。
今天我们对三位英雄进行总结对比,一方面让老铁们对三位有一个全面的认识,另外一方面也供老铁在进行技术选型时做参考。今天全是干货,敲黑板时老铁们需格外留意。
特性比较
敲黑板
- 关键字:接口用interface;抽象类用abstract class;类用class。
- 定义:接口是一种契约,不带具体的实现;抽象类也是一种契约,带有部分实现;类是一种具体的实现,经常是某个接口或抽象类的实现。
- 使用时机:当你想要支持多重继承,或是为了定义一种类型请使用接口;当你打算提供带有部分实现的类请使用抽象类;当你打算提供完整的具体实现请使用类。
- 定义的内容:接口中只能包括public函数以及public static final常量;抽象类与类均无任何限制。
- 函数实现:接口不允许实现;抽象类允许部分实现;类要求完全实现。
区别
敲黑板
- 支持多重继承:接口支持;抽象类不支持;类不支持;
- 支持抽象函数:接口语义上支持;抽象类支持;类不支持;
- 允许函数实现:接口不允许;抽象类支持;类允许;
- 允许实例化:接口不允许;抽象类不允许;类允许;
- 允许部分函数实现:接口不允许;抽象类允许;类不允许。
老铁们知道以上内容后,需要把以上内容融合贯通并运用到实际的编程实践中,选择恰当的类型来表达我们所期待的接口与意图。此外,也基本就可以应付所有的关于上述三种联系与区别方面的技术面试了。
转载自公众号:代码荣耀