面向接口编程,是指面向超类型编程,比如抽象类和接口,或super class,这样的话,可以按照约定进行获取数据,不用关心内部处理的细节,封装了业务逻辑,维护了系统的稳定性和系统间的低耦合性。
面向抽象编程,是指面向抽象角色编程,而不面向具体类编程。好处是程序可以灵活地增加功能,良好的解耦性、可扩展性,符合“开-闭”准则。
抽象类:
类中有抽象方法,继承类必须实现这些抽象方法。(也可以没有抽象方法,而只是实现该类而已,这是纯类型抽象)。
接口:
类中的方法全部为抽象方法,变量为静态变量,接口的方法封装了不同的行为,接口的实现类必须实现这些抽象方法。
继承是“a is A”的关系,接口实现是 "hava a"的关系。
因为继承的子类必须是继承类的子类, 接口只是为了添加一个行为功能而已。接口更多的是使用了组合模式,来添加功能。
区别:
抽象类和接口都是超类型,抽象类是对事物的抽象,接口是对行为的抽象。
这样,在需要使用事物抽象时使用抽象类,在需要使用行为抽象时使用接口。
小结:
抽象类中不一定有抽象方法, 只要有abstract access control modify, 也可以类里没有abstract method,因为这个只是抽象角色而已。 只是让这个抽象无法直接实例化,必须继承这个角色才能实现这个抽象产品。