接口 实现类
接口 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]
建议你看看<设计模式>方面的资料,对你会有很大帮助的