[Kotlin] Class - getter, setter

2024. 10. 29. 03:36·학습 기록/kotlin
반응형

getter & setter

  • 주 생성자(괄호 안에 있는 property) : val과 var를 이용해 해당 프로퍼티의 접근 제어를 설정하여 자동으로 getter와 setter를 생성함
class Person(val name : String, var age : Int){}

val name: String : 읽기 전용 property, getter가 자동으로 생성된다.

var age: Int: 읽기 및 쓰기가 가능한 property, getter & setter가 자동으로 생성된다.

fun main(){
    var p = Person("a",20)

    println("${p.name} : ${p.age}세") // a : 20세
    p.name = "b" //Error!!
    p.age = 21
}

위와 같이 class에서 var로 선언된 age는 값을 읽거나 변경하는 것이 가능하지만

val로 선언된 name은 읽는 것은 가능하지만 값을 변경하려하면 Error가 뜬다.

커스텀 getter & setter

class Person(val firstName: String, val lastName: String, _age: Int) {

    val name: String
        get() {
            return "$firstName $lastName"
        }

    var age: Int = _age
        get() = field
        set(value) {
            if (value >= 0) {
                field = value // field = age
            }
        }
}

val name

  • val로 선언되었기 때문에 setter는 생성되지 않는다.
  • get() : 중괄호 안에 연산을 넣어 커스텀 할 수 있다.

var age

  • var로 선언되었기 때문에 getter, setter 모두 생성된다.
  • get() : name에서의 get과 같이 커스텀 하거나 위와 같이 고정적인 값(field)을 반환할 수 있다.
  • set(value){} : 중괄호 안에 연산을 넣어 커스텀 할 수 있다.

* field : 내부 저장 변수로 이 코드에서는 age를 뜻한다.

*커스텀 하지 않는 get,set은 생략하여도 무방하다.(자동으로 생성됨)


마무리하며

이 글 작성한지 n시간 째..

클래스를 어느정도 공부하고 정리해보려고 했는데 내용이 너무 많아서 차근차근 올리기로 결심해따..

이해는 했는데 글로 정리하려니까 어떻게 써야할지..

키야악

반응형

'학습 기록 > kotlin' 카테고리의 다른 글

[Kotlin] groupBy, groupingBy  (0) 2025.12.03
[Kotlin] 플랫폼 타입(Platform type)  (0) 2025.10.20
[Kotlin] Collection(List, Set, Map)  (1) 2024.10.27
[Kotlin] 반복문(while, for)  (1) 2024.10.20
[Kotlin] String에 쓰이는 함수들  (1) 2024.10.19
'학습 기록/kotlin' 카테고리의 다른 글
  • [Kotlin] groupBy, groupingBy
  • [Kotlin] 플랫폼 타입(Platform type)
  • [Kotlin] Collection(List, Set, Map)
  • [Kotlin] 반복문(while, for)
BaekCCI
BaekCCI
  • BaekCCI
    BaekLog
    BaekCCI
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 학습 기록
        • 안드로이드
        • 문제풀이
        • kotlin
      • 우아한 테크코스
      • 백씨의 하루
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    우아한테크코스
    Java
    softeer
    소프티어
    백준
    i/o extended android
    androiddeveloper
    알고리즘
    Android
    프로그래머스
    우테코
    Algorithm
    Kotlin
    코틀린
    gdg korea
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.6
BaekCCI
[Kotlin] Class - getter, setter
상단으로

티스토리툴바