首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请指教两种实例化的区别

2012-01-14 
请大虾指教两种实例化的区别?interfaceAnalyzer{……}classDocumentAnalyzerextendsAnalyzer{……}请问下面两

请大虾指教两种实例化的区别?
interface   Analyzer
{……}
class   DocumentAnalyzer   extends   Analyzer
{……}

请问下面两种实例化方式有何区别?

(1)   Analyzer   textAnalyzer=new   DocumentAnalyzer();

(2)   DocumentAnalyzer   textAnalyzet=new   DocumentAnalyzet();


如果没有区别,为什么java不把这两种方式统一起来?


[解决办法]
有区别。

第(1)种方法,限制了你下面对textAnalyzer变量只能调用Analyzer接口中定义的方法。
[解决办法]
如果 不 需要 DocumentAnalyzer里有 而 Analyzer里没有 的方法,用第一种。
就是说,如果Analyzer能满足你了,就用第1种。


[解决办法]
用第一种好些,可以隐藏具体实现,针对接口编程。
方便换成接口的另外一个实现,不必修改源代码,或者只需要修改很少的代码·!
[解决办法]
更常用的例子
一般在使用容器对象时建议使用接口,如

Set set = new HashSet();
这样以后你想改用LinkedHashSet, TreeSet 时只要改一个地方就好了。

热点排行