接口与实现类的实现

接口 实现类

接口 a=new 实现类

实现类 b=new 实现类

a.接口方法与b.接口方法有什么不同吗?

这两者有什么区别?

接口和实现类的关系 很像英语里A和The之间的关系

接口 是一个“泛指” 只显示接口的声明
实现类 是一个“特指” 会额外显示其它接口的或自身的声明(实现了多个接口)

它们在调用方法上没有什么不同,不同之处在于 “引用本身”的使用上。

如果 你的接口只有一个实现类的话,那是看不出什么接口的方便的
当一个接口有多实现类的时候,用接口的威力就体现出来了。

比方说你写了一个封闭数据库操作的接口"IDAO",给应用程序使用"BLH"
BLH在操作数据的时,会用到IDAO实现类中的connect(), save(), view(), close()等方法

因为现在的数据库有很多种,如:MySQL Oracle 等等....
所以你写了多个 IDAO的实现类,如 MySQLDAO, OracleDAO 等等...

当有一天你要 另一种 数据库时,只要给BLH指定对应的IDAO实现就好了,无需修改当前代码。就像插件一样方便。

接口 a=new 实现类
实现类 b=new 实现类

区别是a的实例类能换,例如 接口 a=new 实现类C 。而b的实现类换起来不方便例如
实现类C 必须继承 类D,那么C就不能作为b的子类。 也就是不能 实现类 b=new 实现类C

a.接口方法与b.接口方法 调用的方法执行的功能都一样,只要他们等号后面是同一类的对象。

封闭 => 封装 :cry:

怕我表述的不够清楚,写个代码吧

[code="java"]
public class BLH{
private IDAO dao;
public BLH(){
dao = new MySQLDAO();
//这里可以直接修改成 OracleDAO,而不用修改下面的代码
}

public List viewProduct(Map param){
dao.connect();
List ls = dao.view(param);
dao.close();

return ls;

}

public List saveProduct(Map data){
dao.connect();
dao.save(data);
dao.close();
}
}
[/code]

建议你看看<设计模式>方面的资料,对你会有很大帮助的