System 클래스는 Java에서 제일 많이 사용되는 표준 입출력 클래스죠?
System.in(표준 입력), System.err(표준 에러 출력), System.out(표준 출력) 을 포함하죠.

그런데 왜 이 System 클래스가 java.lang 패키지에 속해 있을까요?

이유는 간단합니다.
다시 말하지만 System 클래스는 표준 입출력을 담당하고 있습니다.
그런 만큼 모든 클래스에서 접근이 자유로워야겠죠.

따라서 모든 클래스가 자동으로 import 시키게 되는
Java.lang 패키지에 속해 있는 것입니다.

물론 System 클래스의 필드들은 static으로 선언되어 있지요.

InputStream과 OutputStream은 abstract 클래스입니다.

왜 추상 클래스일까?
크게 두 가지 이유로 나눌 수 있습니다.

첫째,
두 클래스 모두 '바이트의 입, 출력을 담당하는 모든 클래스' 의 수퍼(부모) 클래스이므로
아무런 기능을 가지고 있지 않아야 합니다.

둘째,
사용하고자 하는 클래스에 맞게 read() 나 write() 메소드를
오버라이딩 하여 사용하기 위해
추상 클래스로 선언되어야 합니다.

+ Recent posts