阅读本文前置条件
需要你掌握接口和抽象类的基本定义与区别。
小例子
抽象类
一说到公司的财务人员,大家都知道他的行政职能是什么。
这个职位就是抽象类。其中那套财政处理流程就是抽象类中具体的方法。
这个抽象类(职位)并不能直接处理财务问题,只是规定了在这个职位上的人应该遵循这套办事流程。
具体类
每个职员都有各自不同的特性,比如工资差异,回家的方式等。
这个人员就是具体的类,继承自这个财务职位,但是有各自差异的方法。
这个具体类(财务人员)是直接处理财务问题,是一个可以产生活动的类(人员)。其中哪些差异的方法就是增强的功能或者扩充的功能,对于财务这个具体的职位没有什么用。
接口
有一天,政府需要当地每个公司上交一份在职员工情况表。只告诉每个公司,需要在职员工的年龄,工资等。
这里政府需要的在职员工,就是一个接口。规定每个公司需要提供这些在职员工的信息。
这些获得员工情况的方法并不需要政府来具体描述。政府可以通过规定的接口方法来获取每个在职员工的情况。
总结
接口是一套规范,一个系统需要这个接口来规范这个接口下的对象应该具有什么方法和属性。实现这个接口的对象就需要完成这些规范实现这些方法和属性。在这个基础上这个系统就可以根据具体情况使用不同的对象,可以只关心是否继承了此接口不用关心其它的内容。
抽象类是定义在接口下的,在具体类上的。主要是规范每个对象应该按照某种具体的策略或者方法来实现其中具体的方法。
具体类就是可以new的类,是可以产生具体活动,调用具体方法和属性的类。可以这么理解,jvm中运行的所有活动的类都是具体的对象。