ICustomer 是一个接口
Customer 是一个类
Customer已经实现ICustomer接口了下面代码那样写是什么意思?有什么用?
ICustomer customer = Customer();
Customer 是一个类
Customer已经实现ICustomer接口了下面代码那样写是什么意思?有什么用?
ICustomer customer = Customer();
解决方案 »
- 高分求教 客户远程访问GlassFish V3 EJB问题
- hibernate中的问题
- ibatis连接oracle遇到的问题! 急 大家帮助!!
- java项目外包
- struts数据显示问题
- struct 提交模块和实际URL不同引发找不到相对路径文件
- 我想用JAVA把网站上的图片,下载为本地的图片应该怎样做
- jetspeed 中的 Profiling角色 指什么呢?
- ejb入门问题,无法找到package javax.ejb
- 从nexus上下载jar 下载的全是文件夹
- 求sql语句
- java,int型数字转换成了对应16进制的String型字符串了,我用了以下方法,求高手写一个此方法的逆方法。
这样写,你只能把Customer当做ICustomer服务的提供者,那么你只能使用ICustomer声明的服务。
Customer customer = new Customer();
这样写,那么你就能使用Customer类中所有的公开服务,此时你把它当做Customer来用。
区别其实没啥,这两种写法都行,不存在什么设计、重用、面向接口之类的东西,这些东西是在设计结构时候定的,跟这里如何实例化一个类没有什么关系。比如你声明了一个ArrayList list = new ArrayList();你照样能把这个对象引用丢给参数列表类型为List的方法。
做一个控制一些对象的管理器,对象可能是一个活动的角色,一个AI控制的NPC,或者一个自由移动的宠物,
他们都可以实现自同一个接口IChar
管理器中可以直接HashMap<Integer, IChar>来存储所有这些对象,当需要对某个对象操作时候都可以从这一个哈希表中处理,不用给每种做独立的集合了
而是对于ICustomer customer = new Customer();
这样的写法耿耿于怀。这个东西如果不放在函数里写而是作为参数,那就好理解了吧。
例:
public void doOrder(ICustomer customer) {
custom.order();
}
其实个人觉得这么做就是强调他们属于某个集合,有着共同的行为。
2、如果修正这个错误后,这个写法符合面向接口编程的原则:
只暴露接口中定义的行为给外界调用,子类中新增的行为会被隐藏,提高封装性、安全性。
可以灵活切换子类,如将子类配置到属性文件或xml文件中,避免程序再次编译,提高效率。
用接口来实例类 便于以后管理 程序越大面向接口的优点就越明显