Q1 Java interface和abstract class应用场景
1. interface的应用场合
A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。
B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。
2. abstract class的应用场合
在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:
A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。
Q2 Java 8 新特性
静态方法,只能通过接口名调用,不可以通过实现类的类名或者实现类的对象调用。default方法,只能通过接口实现类的对象来调用。
Q3 Java 接口(interface)的作用与好处
接口实现了多态。
接口也成为Java中的多重继承,在导出类中,如果是从一个非接口的类继承,那只能继承这一个类,其余的基元素都必须是接口,需要把所有的接口都置于implements关键字之后,用逗号将它们隔开。
现在总结一下文章一开始提出的两个问题
一、明明可以在类中直接写所需的方法,为什么还要多写一个接口(或抽象类)?
1. 减少代码的书写(上边分析的代码重载)
2. 提高了代码的可维护性和扩展性。
3. 在团队合作中,代码的规范性
二、抽象类和接口都差不多,在什么时候才选择使用接口?
1. 在当前类族中不是必须的(例如Tuger需要而Rabbit不需要)的方法时
2. 不同类族的多个类需要实现同样的方法时(接口)
接口还有许多没有总结的特点,例如泛型接口,总之学会规范使用接口,就会在将来的项目中,有着很大的帮助。
---------------------
作者:JLongSL 原文:https://blog.csdn.net/JLongSL/article/details/54885780
Q4 抽象类abstract和接口interface的区别与深入思考
abstract和interface的区别不仅仅是一种程序上的区别,更是一种设计思想的区别。
基本属性类的放在abstract class中,特殊功能放在interface中。
比如可以定义abstract class Vehicle其中基本功能是start stop
可以定义interface IGPS
然后create class Car extends Vehicle implements IGPS
网友评论