都是引用类型. 接口实质上是功能说明书,说明有什么属性和功能(属性和方法) 接口理论上是继承者的父类,因此它可以作为实现类的引用,来封装类的复杂实现。 用接口引用 指向 new 的实例,则该引用只呈现接口中约定的属性和方法(封装) 接口可以理解为是纯抽象的类。它与类的关系好比自动洗衣机的说明书 和自动洗衣机的关系。 说明书里描述了自动加水、自动洗衣、自动脱水等功能方法,也有环保、节能、省水等特(属性)。 但是你不能用这个说明书来洗衣服吧? 你得用这些功能的实现者--洗衣机来洗衣服。 虽然是全自动洗衣机,但是它使用就很简单,1 打开盖子,放入衣服; 2 按下“开始”开关 主人完全不用关心洗衣机的内部是如何的复杂(封装)。 体现在代码上就是: 1 约定全自动洗衣机的功能,定义一个接口说明书 public Iterface IWashMac{ void 放入衣服(); void 开始洗衣(); } public class Wasmac: IWashMac{ public void 放入衣服(){ //... } public void 开始洗衣(){ //... } } |