728x90

Kotlin은 객체지향언어로 클래스를 가지고 있다.
클래스 생성
클래스명은 대문자로 시작해야 한다.
class 클래스명 () {
내용
}
매개변수가 없는 경우 ()를 삭제할 수 있다.객체생성은 다음과 같이 생성할 수 있다.
class 클래스명 {
...
}
fun main() {
val 객체명 = 클래스명()
}
생성자
Kotlin에서 생성자는 기본생성자(Primary Constructor), 보조생성자(Secondary Constructor)로 나뉜다.
하나의 클래스는 하나의 기본생성자와 여러 보조생성자로가 있을 수 있다.
기본생성자
class 클래스명 {
...
}
class 클래스명() {
...
}
class 클래스명(val 매개변수명1: 매개변수1타입, val 매개변수명2: 매개변수2타입, ...) {
...
}
ex)
class ClassName(val name: String, val age: Int) {
val str = "${name}의 나이는 ${age}입니다"
}
fun main() {
val cn = ClassName(name = "홍길동", age = 13)
print(cn.str)
}
기본 생성자에서 초기값을 설정해주면 초기값을 입력해 준 매개변수는 입력을 안 해도 지장이 없다
class ClassName(val name1: String = "a", val name2: Int = 1) {
val str = "${name}, ${name2}"
}
fun main() {
val cn1 = ClassName()
println(cn1.str)
val cn2 = ClassName(name1 = "asdf")
println(cn2.str)
val cn3 = ClassName("qwer", 5)
println(cn3.str)
}
보조생성자
보조생성자는 내용을 쓸 수 있으므로 조건에 따라 초기값을 설정하거나 특정 동작을 하게끔 할 수 있다.
constructor()로 보조 생성자를 선언할 수 있다.
class ClassName(name1: String) {
constructor(name1: String, name2: String) : this(name1) {
...
}
}
ex)
class ClassName(name1: String) {
var n = 1
constructor(name1: String, name2: String) : this(name1) {
n = when(name2) {
"a" -> 11
"b" -> 22
else -> 33
}
}
}
fun main() {
val cn = ClassName("2", "a")
println(cn.n)
}
getter / setter
변수를 만들면 알아서 get(), set() 메서드로 getter와 setter 함수를 내부적으로 생성한다.
var 변수명: 변수타입 = 초기값
get() = field
set(value) {
field = value
}
하지만 val은 값 변경이 불가능 하므로 get()만 자동으로 생성한다.
get() 커스텀
ex)
class Name {
var status: String = "online"
var volume: String = "7"
get() {
if (status == "online") return field
else return "off"
}
}
fun main() {
val n = Name()
println(n.volume)
}
출력 : 7
status가 "offline"인 경우는 "off"가 출력
class Name {
var color = "blue"
var isRed: Boolean? = null
get() = color == "red"
}
fun main() {
val n = Name()
println(n.isRed)
}
출력 : false
color가 "red"인 경우는 true가 출력
set() 커스텀
ex)
var 변수명 = 초기값
set(value) {
if (조건) {
field = value
}
}
반응형
'언어 > Kotlin' 카테고리의 다른 글
| [Kotlin] 공개 상태 (0) | 2023.03.10 |
|---|---|
| [Kotlin] 클래스 관계 (0) | 2023.03.03 |
| [kotlin] null 처리 (0) | 2023.02.24 |
| [Kotlin] 반복문 (0) | 2023.02.21 |
| [Kotlin] 구조 , 조건문 (0) | 2023.02.17 |