关于流和多态的一些记录

流的读取问题

read()方法

read()方法经常用于读取一个byte数组或者char数组,其内部的方法如下:

1
2
3
public final int read(byte b[]) throws IOException {
return in.read(b, 0, b.length);
}

首先在读取字节流的时候是所有的字节流的顶级类的是InputStream抽象类,而继承自Inputstream的类都是带有read方法,每一个类几乎丢重写了自己的read方法,而这就是多态的一种体现。

关于socket.getInputStream()方法获取的InputStream

这个获取的输入流是SocketInputStream,在这个类里面有一个变量就是private boolean eof;
这个变量在read方法中可以用于判断文件是否已经到尾了

1
2
3
4
5
6
7
8
9
int read(byte b[], int off, int length, int timeout) throws IOException {
int n;

// EOF already encountered
if (eof) {
return -1;
}
//省略后面方法
}

多态:

其实在java的字节流处理类中就很好的利用了多态,以前只是了解但是实际使用的不多。而且最重要的是父类的静态变量子类是可以直接继承过来的

作者

Somersames

发布于

2017-11-10

更新于

2021-12-05

许可协议

评论