java中子类实现了接口,创建对象为什么还要写成 接口 对象名 =new 类名?

Interface B{
public void show();

}
class A implements B{
public void show(){
System.out.println("123");

}

}
main(){
B b =new A(); //正确的应该是这样的

System.out,println(b.show());

}

我想问的是:把上面的B b =new A(); 改成 A a = new A(); 上面的A也实现了接口B,为什么不能直接创建A的对象呢? 并且我用 A a = new A();编译过,同样能打出123

为什么一定要是: 接口 对象名 = new 类名; 的形式,
而不能是: 类名 对象名 = new 类名; 的形式?

求大神~~~

嗯,这是个好问题呀
其实,就你现在看到的而言,用A a = new A(); 更好。

当你看到通过配置文件进行注入的时候就会明白了

比如当我用到这个接口的时候我希望用我自己的实现,而不是用你的实现,
那么我就要在代码中找到 B,才能在后面写上 new C();
如果原来就是用的A ,我不就找不到了么?

当然实际过程中不是人找的,人只要配置配置文件就好了,代码的编译过程会自动的跳转到你配置的那个实现类上。但是如果这个接口一辈子只有一个实现,那接口没有任何存在的必要,接口的本身就是为了多实现而存在的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-28

Java 中到底是应该用接口类去声明对象 还是实现类去声明对象?

Java 中到底是应该用接口类去声明对象 还是实现类去声明对

相似回答