<aside> 🤔 4장에서 다루는 내용 • 클래스와 인터페이스 • 뻔하지 않은 생성자와 프로퍼티 • 데이터 클래스 • 클래스 위임 • object 키워드 사용

</aside>

여기선 코틀린 클래스를 다루는 방법을 더 깊이 이해하는 장이다.

코틀린의 클래스와 인터페이스는 자바의 것과는 약간 다르다. 예를 들어, 인터페이스에 프로퍼티 선언이 들어갈 수 있다.

자바와 달리 코틀린의 선언은 기본적으로 final이며 public이다. 게다가 중첩 클래스는 기본적으로는 내부 클래스가 아니다. 즉, 코틀린 중첩 클래스에는 외부 클래스에 대한 참조가 없다.

짧은 주 생성자 구문으로도 거의 모든 경우를 잘 처리할 수 있지만, 복잡한 초기화 로직을 수행하는 경우를 대비해 완전한 문법도 있다. 프로퍼티도 마찬가지로 간결한 구문으로 충분히 제 기능을 하지만, 필요하면 접근자를 직접 정의할 수 있다.

코틀린 컴파일러는 번잡스러움을 피하기 위해 유용한 메서드를 자동으로 만들어준다. 클래스를 data로 선언하면 일부 표준 메서드를 생성해준다.

그리고 코틀린 언어가 제공하는 위임(delegation)을 사용하면 위임을 처리하기 위한 준비 메서드를 직접 작성할 필요가 없다.

또한 클래스와 인스턴스를 동시에 선언하면서 만들 때 쓰는 object 키워드에 대해 알아본다. 싱글턴 클래스, 동반 객체(companion object), 객체 식(object expression = java 익명 클래스)을 표현할 때 사용한다.

먼저 클래스와 인터페이스에 대해 알아보고 코틀린에서 클래스 계층을 정의할 때 주의해야 할 점을 알아보자.