IO 란?
Java IO도 객체다.
Java IO는 조립되어 사용되도록 만들어졌다.

마름모 꼴로 되어 있는 것은 Decorator은 Component를 가질 수 있다.
즉, Decorator 생성자에 Component가 들어가야한다.
Component를 수행하는 것이 InputStream, OutputStream, Reader, Writer
주인공과 장식(Decorator)을 구분할 수 있어야 한다.
Decorator은 InputStream, OutputStream, Reader, Writer를 생성자에서 받아들인다.
주인공은 어떤 대상에게서 읽어들일지, 쓸지 결정한다.
주인공은 1byte or byte[]단위로 읽고 쓰는 메소드를 가진다.
주인공은 1char or char[]단위로 읽고 쓰는 메소드를 가진다.
Decorator은 다양한 방식으로 읽고 쓰는 메소드를 가진다.
+InputStream, OutputStream, Reader, Writer는 추상클래스
+추상클래스란?
-> 하나 이상의 순수 가상 함수를 포함하고 있는 클래스
-> 추상 클래스는 동작이 정의되지 않은 순수 가상 함수를 포함하고 있기 때문에 인스턴스를 생성할 수 없다. 따라서 추상 클래스는 먼저 상속을 통해 파생 클래스를 만들고, 만든 파생 클래스에서 순수 가상 함수를 모두 오버라이딩 하고 나서야 파생 클래스의 인스턴스를 생성할 수 있다.
-> 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가진 함수의 집합을 정의해주는 역할을 맡고 있다.
Java IO의 특수한 객체
System.in : 표준 입력(InputStream) 키보드로부터 입력
System.out : 표준 출력 (PrintStream) 화면에 출력
System.err : 표준 에러 출력 (PrintStream)
Java IO의 클래스 상속도
👀 Java IO의 클래스 상속도

출처 [https://blog.itthis.kr/69]

Java IO 클래스는 생성자가 중요하다.
실습
< 키보드로부터 한줄씩 입력 받아 화면에 한줄씩 출력하시오.>


과정
System.in이 키보드로부터 받아 들이고 InputStreamReader에 전달
InputStreamReader는 BufferedReader에 전달
BufferedReader의 readLine메서드로 한 줄씩 입력 받는다
println으로 한 줄씩 출력한다.
좋은 정보 감사합니다