关于java中的接口

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:10:09
请看,我先定义了一个接口
public interface MyInterface {
public void add(int x,int y);
public void volume(int x,int y,int z);
}
保存名为MyIvnterface.java
然后实现接口
public class InterfaceDemo implements MyInterface{
public void add(int x,int y){
System.out.print(" "+(x+y));
}
public void volume(int x,int y,int z){
System.out.print(" "+(x*y*z));
}
public static void main(String args[]){
MyInterface d=new InterfaceDemo();
d.add(23,12);
d.volume(12,3,5);
}
}

我想问的是MyInterface d=new InterfaceDemo(); 和
InterfaceDemo d=new InterfaceDemo(); 有什么区别,
对于MyInterface d=new InterfaceDemo(); 我认为是d声明为Myinterface类型能够调用InterfaceDemo实例。请问调用这个的实例是什么意思呢,是指的那个里面的方法么。接口听说是为了描述某种能力。请问说法对么
举例说明的时候可以把d改成其它的么,我看不清楚呢

MyInterface demo=new InterfaceDemo(); 中的demo是接口,d可以用任何实现了MyInterface的具体类来实例化。
InterfaceDemo demo=new InterfaceDemo(); 中的demo是具体的对象,只能由InterfaceDemo或其子类来实例化。
如果用接口声明demo,那么哪一天想改变demo的实例化方式,只要用另一个实现了该接口的类实例化demo就可以了,而对于d的其他调用者,只要符合该接口,则不受任何影响;如果用具体类声明demo,那么需要更改demo的声明才可以实现,而demo或许也别人调用,这样影响就大了。

学习。。。

接口主要是用来描述一组行为的共性,很多设计模式中都必须要通过接口来实现,另外在java中,接口又解决了多继承的实现,并且注入操作也需要通过接口来实现。

可以参考一下设计模式中的桥接模式(bridge),这里如果没有接口或抽象类,几乎是无法实现;另外Spring源码中对DB事务的注入段代码也是需要接口来实现的。

建议楼主把java的多态拿来翻下就比较清楚了.

两者没说明区别,都可以用
只是声明出的两个类型不一样

一个是MyInterface
一个是InterfaceDemo