class Person {
// 멤버 필드
private String name;
private int age;
// 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 게터와 세터
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
// ...
}
// 주 생성자에 3개의 매개변수 정의
class User(_id: Int, _name: String, _age: Int) {
// 프로퍼티들
val id: Int = _id // 불변(읽기 전용)
var name: String = _name // 변경 가능
var age: Int = _age // 변경 가능
}
// 좀 더 간략화
class User(val id: Int, var name: String, var age: Int)
fun main() {
val user = User(1, "Sean", 30)
// 게터에 의한 값 획득
val name = user.name
// 세터에 의한 값 지정
user.age = 41
println("name: $name, ${user.age}")
}
기본 게터와 세터 직접 설정
var 프로퍼티이름[: 프로퍼티자료형] [= 프로퍼티 초기화]
[get() { 게터 본문 }]
[set(value) { 세터 본문 }]
val 프로퍼티이름[: 프로퍼티자료형] [= 프로퍼티 초기화]
[get() { 게터 본문 }]
val
은 게터만 설정 가능class User(_id: Int, _name: String, _age: Int) {
// 프로퍼티
val id: Int = _id
get() = field
var name: String = _name
get() = field
set(value) {
field = value
}
var age: Int = _age
get() = field
set(value) {
field = value
}
}
fun main() {
val user1 = User(1, "Kildong", 30)
// user1.id = 2 // error -> val 프로퍼티는 값 변경 불가
user1.age = 35 // 세터 동작
println("user1.age = ${user1.age}") // 게터 동작
}
게터/세터에서 사용하는 특수 변수