kotlin은 객체지향을 지원한다. 따라서 클래스를 생성할 수 있다.
클래스를 선언하기 위해서는 class 키워드를 사용한다.
class와 property
class 객체의 특성은 property에 선언한다.
property 선언은 class 이름 옆의 () 소괄호를 사용해 이루어지고,
body 내부에 {} 중괄호를 사용하기도 한다.
class example(val id: Int, val pw: String){
val name: String = ""
}
인스턴스 생성 후에 변경되어야 하는 변수가 아니라면, property는 read-only인 val로 선언해야 한다.(추천사항)
val이나 var 없이 property를 선언한다면 인스턴스 생성 후에는 접근 불가능하게 된다.
또한, 함수에서처럼 class property도 default value를 가질 수 있다.
class를 선언하면서 () 이 괄호 안에 적은 부분을 class header라고 한다.
이 class header에 적힌 parameter들로 kotlin에서 자동으로 constructor(생성자)를 만들어준다.
예를 들어,
class myClass(val id: Int, var pw: String)
이렇게 class를 선언했다면, main 함수에서 이 클래스를 다음과 같이 사용할 수 있다.
fun main(){
val myInstance = myClass(1, "pw1")
}
오른쪽의 myClass()가 생성자를 호출하는 부분이고, 이 생성자에 id = 1, pw = "pw1"라고 property를 넘겨주어 인스턴스 myInstance를 생성한 것이다.
실제 class 내부에 생성자를 설정하지 않아도 자동으로 default constructor가 만들어져 사용한 것.
이렇게 만들어진 instance의 property에 접근하려면,
[instance name].[property name]
과 같은 방식으로 접근할 수 있다.
위에서 만든 myInstance의 경우라면 myInstance.id나 myInstance.pw로 접근 가능하다.
member function
객체의 행위를 표현하기 위해 member function을 사용한다.
멤버 함수는 클래스의 body부분({}로 쌓인 부분)에 정의한다.
멤버 함수도 property와 마찬가지로 선언하고, 호출도 [Instance name].[member function name] 과 같이 할 수 있다.
data class
kotlin에는 data를 저장하는데 유용한 'data class'가 존재한다.
일반 class와 같은 기능을 하지만, 추가적인 멤버 함수를 이미 가지고 있다는 점이 특징이다.
data class를 사용하기 위해서는, data 키워드를 사용하면 된다.
data class myClass(val id: Int, val pw: String)
data class에는 다음과 같은 멤버 함수가 내장되어 있다.
.toString() : class의 property를 읽을 수 있는 string 형태로 출력
.equals() or == : 클래스 인스턴스들을 비교
.copy() : 다른 인스턴스를 복사해 새로운 인스턴스 생성
...
등등
'CS > Kotlin' 카테고리의 다른 글
null safety - "?" 문법 (0) | 2025.01.08 |
---|---|
[Kotlin 문법] 9. Null Safety (0) | 2024.06.13 |
[Kotlin 문법] 7. Lambda expression (0) | 2024.06.12 |
[Kotlin 문법] 6. 함수 - Unit, default parameter value, single-expression, named argument (1) | 2024.06.07 |
[Kotlin 문법] 5. loop - range, for, while (0) | 2024.06.07 |