要求你自己实现一个类MyInputStream读取文件,且不能抛出异常
Is a --- > 是一个
Has a 有一个 - 包裹
包装、包裹:
自己不实现任何功能,所有功能都是通过内部的成员变量实现的。
包装是指一个类是某个类的子类,且拥有这个类的成员,就是包装模式。
如果A包装了B则:
A extends|implments B{
Private B b;
}
包装的目的是,让子类变成某个类的子类,且增强被包装类的方法。
包装类从来不做任何的工作,都是通过内部的被包装类,即成员变量执行方法的。
以下包装:
public class TestDemo {
public static void main(String[] args) throws Exception {
InputStream in = new MyInputStream("d:/a/a.txt");
byte[] b = new byte[1024];
int len = 0;
while((len=in.read(b))!=-1){
String s = new String(b,0,len);
System.err.print(s);
}
in.close();
}
}
class MyInputStream extends InputStream[成为inputstream的子类,即is a.]{
private InputStream in;[拥有这个类的成员,即has a 。]
public MyInputStream(String fileName) {
try {
in = new FileInputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public int read(byte[] b){
int len=-1;
try {
len = in[所有的功能,都通过成员实现。].read(b);
} catch (IOException e) {
e.printStackTrace();
}
return len;
}
public void close(){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public int read() throws IOException {
return 0;
}
}