프로그램은 처음부터 모든 것을 만들기는 어렵습니다. 처음이라 그런 것도 있지만, 꼭 그래야 하는 것도 아닌 점도 있습니다. 남이 만든 클래스를 가져다가 쓰는 것이 필요하다는 거죠. 그래서, 이번 시간에는 그런 것보다 중요한 인터페이스의 의미를 통해서 대상을 잘 파악할 수 있게 되었다는 것을 확인해보는 시간을 가져보고자 합니다.
fileWriter 클래스는 저장하고자 하는 파일 이름을 인자로 던져주고, 파일에 쓰고 싶은 내용을 write 메서드를 사용해서 쓸 수 있는 클래스입니다. 이 클래스를 사용할 때 주의할 점은 꼭 사용하고 나서 close를 해주어야 한다는 점입니다. 그 이유는, 해당 파일을 open 된 상태로 붙잡고 있으면, 읽기는 되지만 다른 프로그램에서 쓰기나 사용이 안되기 때문에 그렇습니다. 그러면 쓰기 작업을 다 하고나면 닫아줘야 하는 것이죠.
즉, 자바에 있는 많은 기능들 중에 특히 쓰기 관련된 기능들은 작업을 하기 위해서는 독점적으로 해당 파일을 붙잡아 둬야 합니다. 그리고 반드시 추후에 놓아주어야 합니다. 놓아주는 기능이 바로 close이구요. 놓아주는 행위의 메소드를 클래스마다 다르게 만들면 사용하기에 어렵겠죠. 그래서 close를 모든 클래스에서 동일하게 사용하게끔 강제하는 장치를 자바는 가지고 있습니다.
그것을 한 번 보겠습니다.
FileWriter 클래스는 Closeable, Flushable, Appendable, AutoCloseable 과 같은 interface 들을 가지고 있는데, AutoCloseable을 한번 보겠습니다. 해당 interface에서는 close( ) 메서드가 정의되어 있고 해당 interface를 FileWriter가 implements 하고 있기 때문에 강제되고 있다는 것을 우리는 알 수 있습니다.
그리고 All Known Implementing Classes 를 보면,AutoCloseable 을 implements 하고 있는 클래스들을 볼 수 있는데, 여기 있는 클래스들에서는 모두 AutoCloseable을 implements 하고 있기 때문에 우리는 아주 당당하게 close 메소드를 사용하여 지금 현재 파일을 닫아줄 수 있다는 것을 우리는 알 수 있습니다.
즉, 인터페이스는 이렇게 동작 방법을 표준화 하는 데에 아주 많이 사용된다는 겁니다.
핵심
1. 인터페이스는 클래스들의 특정 동작에 대한 표준화 하는 데에 많이 사용되고 있다. (AutoCloseable 이 대표적)
출처 : https://opentutorials.org/module/4872