java 一个类实现接口 实例对象

现在有一个接口A,一个类B实现了这个接口,那么在定义B对象的时候,为什么喜欢用
A obj=new B(); 而不用B obj=new B(); 第一种定义的方式有什么特别之处吗

这是为了实现 动态互换
因为有一天你一个类C 实现了A
你不想再使用B 了。那么你只是需要 修改一下就行 A a =new C();
而不必去到处更改B 的类型。
而且这也是Java设计原则中的一个。依赖抽象不依赖具体。
就那一个最常见的例子,你就知道了。
List list =new ArrayLIst();

List list = new LinkedList();
这就互换了啊 ArrayList 是数组。LinkedList是链表 但是 不需要更改其他的代码。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-04
实现接口类似于继承,这样写就是所谓的多态,父类引用指向子类对象。多态跟动态绑定是很有用的。等你做大一点的项目时用起来就很方便了。如果想知道有哪些的好处的话,直接百度“多态的用处”之类的就行了。
第2个回答  2012-07-04
A obj=new B();
是面向对象中多态的种用法
属于子类当父类用!

如果A是一个抽象类的话就不能new 了..
但是可以new A 的子类!
因为父类的方法子类也有!

如果B是一个抽象类的话就不能new 了
如果你想调用B的方法只有去new B的父类!
比如
C是B的子类这个时候就用到
B a= new C();

我是一个新鸟,如有错误!请各位大神帮忙挤出`谢谢!
希望我的答案对你有用!
第3个回答  2012-07-04
这说明b是一个实现类,一般接口更加通用些,还有一个原因就是隐藏代码,你访问的都是接口的方法,不能直接看见b的实现
第4个回答  2012-07-04
个人觉得没什么特别的地方,这种写法主要用在面向接口编程中,在工厂模式中也有用到
相似回答