62,612
社区成员
发帖
与我相关
我的任务
分享
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Test{
public static void main(String args[]) throws Exception{//异常抛出,不处理
File f = new File("d:"+File.separator+"test.txt");
OutputStream out = null; //准备好一个输出流对象
out = new FileOutputStream(f); //通过对象多态性,进行实例化
String str="hello world";
byte b[]=str.getBytes();
out.write(b);
out.close();
}
}
import java.io.File;
import java.io.FileOutputStream;
public class Test{
public static void main(String args[]) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
FileOutputStream out = new FileOutputStream(f);
String str="hello world";
byte b[]=str.getBytes();
out.write(b);
out.close();
}
}
public void method(OutputStream out){}
在这个方法里,参数是OutputStream类型,如果你设计成FileOutputStream类型,是不是他所能接受的参数类型就比OutputStream小了,那么其他的非FileOutputStream的OutputStream就不能被传给这个方法了,万一以后要兼容其他类型,就得改了,但如果一开始就设计成比较宽泛的类型(OutputStream),就不用在改,而且即使你以后不需要扩展,那也没有任何影响啊。
这就是面向对象中“依赖抽象,不依赖具体”的原则。