직렬화는 프로그램을 실행 종료할때마다 객체를 계속해서 새로 생성하기 때문에 그 과정을 생략하기위해 객체의 정보를 바이트로 바꾸어 객체를 다시 만들지 않고도 해당 바이트 스트림을 역직렬화를 통해 불러올수 있는것을 의미한다.
https://okky.kr/articles/224715 의
Jason Wang 이라는 분의 설명을 참고함
자바에서 데이터를 두가지 형식으로 분류하면
float int char등 단순한 값 형태의 데이터와
클래스를 이용한 참조형의 형태 두가지로 나눌수 있는데
디바이스나 프로그램으로 전송할수있는건 값 형태의 데이터이고
아닌 경우를 전송, 저장하기 위해 바이트형태로 직렬화해서 보낸다는것.
정리하면 직렬화는 보통 파일 저장이나, 패킷 전송시에 '파싱할 수 있는 데이터를 만들기 위해' 사용됩니다.
라고함
쟤는 implements를 사용하는데 이건 extends와 비슷하지만
보통의 클래스가 아닌 인터페이스를 이어받는다는 의미로 쓰임
안에 들어가보면 아무런 메소드도 없고
실제로 저 코드가 저 안에있는 어떤 메소드도 오버라이딩 하지 않았는데도 돌아감
최상위 클래스? 최상위라서 그런것같음.
입출력 스트림은 FileOut풋스트림 뭐 이런거고
보조스트림은 버퍼드, 오브젝트아웃풋어쩌고처럼
입출력으로는 한계가 보이는 성능, 기능들을 도와주기위해 존재하는 스트림임