빠르게 살펴보기
코틀린의 클래스는 properties를 가질 수 있습니다. Java로 생각하면 인스턴스 변수입니다. 멤버 변수라고 하지 않는 이유는 멤버 변수에 static 변수도 포함되기 때문입니다.
Java의 멤버 변수
class Person {
int id; // 인스턴스 변수 -> 멤버 변수
String name; // 인스턴스 변수 -> 멤버 변수
static int age; // static 변수, 클래스 변수 -> 멤버 변수
}
코틀린에서 properties는 다음과 같이 선언할 수 있습니다. Java와 변수 선언 방법만 다를 뿐 큰 차이가 없습니다.
class Person {
var id: Int = 0
var name: String = "Suzuki"
}
properties 사용방법도 거의 동일합니다. 객체를 만들어서 Java의 field처럼 쉽게 변수명으로 부를 수 있습니다.
val student = Person() // new 키워드를 사용하지 않음
student.id = 10
student.name = "Kim"
위에서 언급한 Java의 static 변수를 코틀린에서 유사하게 사용하는 방법이 있습니다. Companion Objects을 사용하면 됩니다. '클래스명.변수'로 접근하는 형태가 Java의 static 변수와 동일합니다.
(Companion Objects에 대해서는 추후 공부해야 할 부분이네요.)
fun main() {
val student = Person()
student.id = 10
student.name = "Kim"
Person.age = 20
println("student.id = ${student.id}")
println("student.name = ${student.name}")
println("Person.age = ${Person.age}")
}
class Person {
var id: Int = 0
var name: String = "Suzuki"
companion object {
var age: Int = 0
}
}
student.id = 10
student.name = Kim
Person.age = 20