책 보고 있구요

BufferedOutputStream의 close() 함수를 호출하면

실제로 기반 스트림의(FileOutputStream)의 close()를 호출하여 버퍼에 남아있는 것들을 출력한다는데

그래서 따로 FileOutputStream의 close는 호출하지 않아도 된다네요

그림 상으로 보면 보조 스트림의 아버지는 Filter고 할아버지는 OutputStream인데

어떻게 FileOutputStream이 BufferedOutputStream의 기반 스트림이 될수가 있는거지요?

초보라서 허접한 질문 죄송해요..ㅜㅜ

버퍼아웃풋스트림의 close를 호출하면 최고 조상인 아웃풋스트림의 오버라이딩된 필터 스트림의 close를 호출하는거 아네여?




public class FilterOutputStream extends OutputStream {

    protected OutputStream out;

public FilterOutputStream(OutputStream out) {

this.out = out;

}

 

public void close() throws IOException {

try {

flush();

} catch (IOException ignored) {

out.close(); // 기반 스트림의 close()를 호출한다.

}

}