日期:2014-05-17  浏览次数:20681 次

求助:类与接口的一个问题
类a 实现了接口b中的所有方法,a 的子类是否可以直接使用这些方法?如果a中有与接口中重名的方法是否允许?

------解决方案--------------------
可以使用
允许
------解决方案--------------------
第一个可以使用
第二个那个方法名字一样,参数不一样就OK
------解决方案--------------------
1、可以使用,子类继承a类,自然就能用a类方法。
2、a中有与接口中重名的方法是个嘛意思,是说2个一样的方法么,如果这样那就不允许;如果是一个方法,那就是a对b的方法实现。
------解决方案--------------------
第一个可以使用。
第二个如果方法名一样参数不一样也可以,如果方法名一样参数一样,就在前面加上,@Override
------解决方案--------------------
这个就要站在设计的角度去考虑了。使用接口往往都伴随着多态。例如在一个业务的设计上,为了统一业务的管理。可能都声明此业务的实现方法名为统一的方法名。而每个业务逻辑又有所不同,而至于具体的实现,或者以后的改动你是不知道的。此时如果你在一个层面上调用这个方法的话,如果你用具体类的话一旦业务逻辑或方法逻辑变动,你就得跟着变动了,有可能还会出现重复写一些相同的代码,而是用接口则不存在这种问题,都是这个方法的调用,至于是哪个实现怎么实现不用管,由以后的开发人员自己去实现,对于前面代码的那些可以分毫不动。
策略模式里就大量应用这种模板设计。例如spring的JdbcTemplate,他里面的大量逻辑方法都是接口,就是因为,spring的设计人员,他并不知道你所要的逻辑是什么,只是提供一些常用的此接口实现而已,但到一些你自己的具体特殊业务时一遍实现接口,自己使用自己想要的逻辑来实现。而又不会改动其它地方,即可完成想要的功能。