子类可以实现多个接口,但只能继承一个抽象类。另外,接口除了静态最终成员外,只能含有抽象的未实现方法,only public, abstract, default, static and strictfp 。而抽象类可以含有自己的成员,可以含有已经实现的方法,可以含有构造函数,最后含有1-多个需要子类实现的抽象方法。protected也可以作为抽象方法。
我认为一般接口是大多数对象都有的共性:比如 比较接口,序列化接口,不涉及对象的性质。
而抽象类则一般是实现了某些接口的,有一定特性的基类,已经实现了大部分的逻辑,而只有少量的方法需要子类去实现,通过实现这些方法,就可以形成不同的类。比如List 抽象类,不同的实现就造成了不同的子类
不过我认为接口和抽象类都是用于接收特定对象的。通过调用接口和抽象类限定的方法就可以无需关注底层实现,就可以通用的使用这些对象了。 |