6. 클래스와 인스턴스 (Classes)
코틀린은 클래스 선언과 동시에 주 생성자(Primary Constructor)를 정의하여 코드를 획기적으로 줄여줍니다.
클래스 이름 옆에 val이나 var를 붙여 파라미터를 적으면, 내부 필드 선언과 생성자 할당을 한 번에 끝낼 수 있습니다. 자바의 지루한 Getter/Setter도 내부적으로 자동 생성됩니다.
// 주 생성자를 이용한 초간단 클래스 선언
// 클래스 이름 옆의 괄호가 주 생성자 역할을 하며, val/var를 붙이면 프로퍼티(필드+getter)가 됩니다.
class Person(val name: String, var age: Int) {
// 인스턴스가 생성될 때 즉시 실행되는 초기화 블록
init {
println("새로운 사람(${name})이 생성되었습니다.")
}
// 멤버 함수
fun introduce() {
println("제 이름은 $name 이고 나이는 $age 입니다.")
}
}
fun main() {
// 코틀린에서는 객체 생성 시 new 키워드를 쓰지 않습니다!
val p1 = Person("Alice", 25)
p1.introduce()
// Getter/Setter 호출 대신, 마침표(.)로 직접 프로퍼티에 접근/수정합니다. (내부적으론 메서드 호출)
println("이름 읽기: " + p1.name)
p1.age = 26 // Setter 동작
println("나이 증가: " + p1.age)
}