以java.io.DataInput接口为例,java.io.DataInputStream是它的一个实现类,
那么,在实际的应用中,假如我不需要对接口以及类做任何的扩展,那DataInput di = new DataInputStream()和DataInputStream di = new DataInputStream()有没有什么实质的区别?应该怎么用这两种方式?请高手详细解答,谢谢
那么,在实际的应用中,假如我不需要对接口以及类做任何的扩展,那DataInput di = new DataInputStream()和DataInputStream di = new DataInputStream()有没有什么实质的区别?应该怎么用这两种方式?请高手详细解答,谢谢
我觉得没什么实质上的区别吧!
不过我觉得最好就是用DataInput di = new DataInputStream()这个!
用这个可以加强你代码的通用性!
DataInputStream di = new DataInputStream() 这个通用性不好,假如你不想使用DataInputStream你就需要该很多地方,包括代码。
接口使用起来更加灵活!
我需要一个什么东西,这个东西能做什么(what is it,what can it do)
类就是:这是个什么东西(类别、类型)
接口就是:这个东西能做什么(功能)
现实中,我们需要一个门,这个门是个大楼的门,要求有门禁系统
显然门应该定义成类,支持门禁系统是个接口类关注的是类型、类别,接口关心的是做什么
特别现在流行的设计模式正是这种思想的体现
spring的核心机制就是一个很好的体现
我告诉你我要实现什么,怎么实现我不关心,只要你符合我的要求,我就用你DataInput di(1) = new DataInputStream()和DataInputStream di(2) = new DataInputStream()
从所要求达到的目的来看这两个di没本质区别
从实现过程来看1和2是完全两种思想,1是接口DataInput的一个具体实现,2是一个具体的类(参考上面内容)
DataInputStream di = new DataInputStream() 这个通用性不好,假如你不想使用DataInputStream你就需要该很多地方,包括代码。
接口使用起来更加灵活!
接口优点2:有了接口,类编写起来就有了一个大纲,直接去复写相应的方法就OK了。
接口优点3:接口可以很好的组织类结构。
接口优点4:可以并行开发,类中注入需要的接口,而接口中的方法是定义好的,这样就不需要实际的实现方法,就可以在类中注入接口来使用。具体实现的时候再去注入实现子类。
……
等等接口注入:public interface IDemo{
void run();
}public class Test{ private IDemo demo; public void setDemo(IDemo demo){ //这个就叫注入也叫传入
this.demo=demo;
}
//其他方法略
}
这样 不需要IDemo的实现类,我就可以编写Test类了。
如果不扩展,那么就不用接口好了。就你目前说的,确实没有本质区别,也没有什么作用。只是DataInputStream不仅实现了DataInput,还继承了FilterInputStream。如果 DataInput di = new DataInputStream(),以后你如果不强制转化的话,就只有DataInput的接口好提供给你了。
而你其实有更多可以调用的接口。
public void fun(Object o)
{
DataInput=o;
}
其实我是想说,要是需要根据具体情况要做变动的话,DataInputStream这样具体的类就不行了
呵呵,仔细想想就明白为什么了
public void fun(Object o)
{
DataInput=o;
...
...
}