data classclass 클래스명(생성자 파라미터) { ... }val, var 키워드를 붙이면 자동으로 Getter/Setter 가 생성된다.val → 읽기 전용 (getter만)var → 읽기/쓰기 가능 (getter + setter)class Person(
val name: String, // 읽기 전용
var age: Int, // 읽기/쓰기 가능
) {
fun introduce() = println("안녕하세요, 저는 $name, 나이는 $age살 입니다.")
}
fun main() {
val person = Person("수빈", 25)
person.introduce()
person.age = 26 // var라서 수정 가능
println("변경된 나이: ${person.age}")
}
toString(), equals(), hashCode(), copy() 같은 메서드를 자동으로 생성해준다.private를 붙이면 외부에서 접근할 수 없는 값으로 만들 수 있다.data class User(
val id: Int,
val name: String,
private val password: String // 외부 접근 불가
)
fun main() {
val user1 = User(1, "홍길동", "1234")
val user2 = user1.copy(name = "임꺽정") // copy() 자동 생성됨
println(user1) // User(id=1, name=홍길동)
println(user2) // User(id=1, name=임꺽정)
// println(user1.password) // ❌ 접근 불가 (private)
}
| 구분 | 특징 | 비고 |
|---|---|---|
class | 일반적인 객체 생성, 메서드 작성 가능 | val/var로 getter/setter 자동 제공 |
data class | 데이터 저장 전용, toString()/equals()/copy() 자동 생성 | private 붙이면 외부 접근 차단 |
✅ Tip
data class를 사용class 사용