4.1 클래스 정의하기
클래스 정의는 커스텀으로 정의된 연산들이 포함된 새로운 타입을 만들어준다. 자바나 C++ 같은 다른 객체지향 프로그래밍 언어에 익숙하다면 클래스 정의도 익숙할 것이다. 이번 절에서는 기본적인 클래스 구조와 새로 할당된 인스턴스를 초기화하는 방법, 가시성 문제, 다른 클래스나 함수 본문 안에서 선언할 수 있는 특별한 유형의 클래스를 살펴본다.
기본적으로 클래스 선언은 참조 타입(referential type)을 정의한다. 즉, 이런 참조 타입의 값은 특정 클래스 인스턴스(instance)의 실제 데이터 위치를 가리키는 참조다. 자바 인스턴스는 명시적으로 특별한 생성자 호출을 통해 생성되고, 프로그램 내에서 객체를 가리키는 모든 참조가 사라지면 가비지 컬렉터(garbage collector)에 의해 자동으로 해제된다. 코틀린 1.3부터는 인라인 클래스(inline class)라는 개념이 도입됐다. 인라인 클래스를 사용하면 참조 타입이 아닌 타입을 정의할 수 있다. 이 주제는 6장 특별한 클래스 사용하기에서 살펴본다.