자바와 달리 정적(static) 멤버만 들어 있는 유틸리티 클래스의 초기화를 막으려고 기본 생성자를 비공개로 만들 필요는 없다. 코틀린은 정적 멤버를 클래스 밖의 패키지 수준에 둔다.
접근자와 프로퍼티
자바에서는 객체 프로퍼티를 외부에 직접 노출하는 것을 나쁜 습관으로 간주한다. 그래서 프로퍼티를 바로 노출하는 대신에 값을 설정하거나 읽기 위한 메서드를 통해 프로퍼티를 외부에 노출한다. 이런 메서드를 게터(getter)와 세터(setter)라고 부르며 둘을 합쳐서 접근자(accessor)라고 한다. 다음 코드는 사람 이름을 가져오기 위해 게터를 호출한다.
val person = Person("Bob") ... println(person.name) // 게터 호출
코드를 보면 마치 name이라는 필드에 직접 접근하는 것처럼 보인다. 하지만 실제로는 컴파일러가 생성한 게터를 사용한다. 생성된 게터는 필드와 같은 이름이며 호출하기 위해 뒤에 괄호를 붙일 필요가 없다.
앞의 코드에서 System.out에 들어 있는 println을 자바에서보다 훨씬 쉽게 호출할 수 있음을 발견한 독자도 있을 것이다. 여러분이 작성할 프로그램이 콘솔에 내용을 출력할 일은 거의 없기 때문에 이런 내용이 그리 중요하지는 않지만, 그래도 언급할 만한 가치는 있다.