더북(TheBook)

두 코드를 비교하면 코틀린 버전이 훨씬 더 간결하다. 몇 가지를 자세히 알아보자.

코틀린 클래스는 기본적으로 공개(public)다. 따라서 public이라는 단어를 쓸 필요가 없다. 클래스를 공개하지 않으려면 private, protected, internal 변경자(modifier)를 지정해야 한다. internal 변경자는 클래스가 정의된 모듈 안에서만 클래스에 접근할 수 있다는 뜻이다. 코틀린에는 자바의 ‘패키지 내 공개(package private)’에 해당하는 변경자가 없다(자바에서 아무 변경자도 없는 클래스는 같은 패키지 안에서만 접근할 수 있다). 자바와 달리 protected는 클래스를 확장하는 경우에만 사용할 수 있고, 같은 패키지 안에 있는 다른 클래스에서는 protected 클래스에 접근할 수 없다.

코틀린 클래스는 기본적으로 상속 불가(final)다. 그래서 코틀린과 동등한 자바 코드에서는 클래스를 final 변경자로 선언한다. 자바에서 대부분 클래스는 final로 선언되어야 하지만 프로그래머들이 이를 잊는 경우가 많다. 코틀린에서는 기본적으로 클래스를 상속 불가로 만들어서 이 문제를 해결했다. 코틀린 클래스를 상속할 수 있게 하려면 open 변경자를 사용하라. 확장에 대해 열려 있는 클래스는 확장을 염두에 두고 설계를 해야 하므로 코틀린의 접근 방법이 더 안전하다.

생성자 정의가 클래스 이름 뒤에 온다. 그리고 생성자 구현은 init 블록 안에 들어간다. 초기화 블록(init 블록)은 생성자 파라미터에 접근할 수 있다.

접근자(accessor)가 필요 없다. 코드를 컴파일하면 컴파일러가 접근자를 생성해 준다.

자바와 달리 공개 클래스 이름이 그 클래스가 담겨 있는 파일 이름과 같을 필요가 없다. 파일 이름을 원하는 대로 정해도 된다. 게다가 한 파일 안에 여러 공개 클래스를 정의해도 된다. 하지만 꼭 그렇게 해야 할 필요는 없다. 공개 클래스를 클래스 이름과 같은 파일에 따로 넣어 두면 필요할 때 클래스를 쉽게 찾을 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.