본문 바로가기
Java/Android App - Kotlin

Kotlin - 클래스 (속성 정의)

by 키모형 2023. 1. 3.
반응형

메서드는 클래스가 실행할 수 있는 작업을 정의하고, 속성은 클래스의 특성이나 데이터 속성을 정의합니다. 예를 들어 스마트 기기에는 다음과 같은 속성이 있습니다.

  • 이름. 기기 이름입니다.
  • 카테고리. 스마트 기기의 유형입니다(예: 엔터테인먼트, 유틸리티, 요리).
  • 기기 상태. 켜기, 끄기, 온라인, 오프라인과 같은 기기의 상태입니다. 기기가 인터넷에 연결되어 있으면 온라인 상태로, 그렇지 않으면 오프라인으로 간주됩니다.

속성은 기본적으로 함수 본문이 아닌 클래스 본문에 정의된 변수입니다. 즉, 속성과 변수를 정의하는 문법은 동일합니다. val 키워드로 변경 불가능한 속성을 정의하고 var 키워드로 변경 가능한 속성을 정의합니다.

앞서 언급한 특성을 SmartDevice 클래스의 속성으로 구현합니다.

 

turnOn() 메서드 앞에 있는 줄에서 name 속성을 정의하고 "Android TV" 문자열에 할당합니다.

class SmartDevice {

    val name = "Android TV"

    fun turnOn(){
        println("Smart device is turned on.")
    }

    fun turnOff(){
        println("Smart device is turned off.")
    }
}

name 속성 다음 줄에서 category 속성을 정의하고 "Entertainment" 문자열에 할당한 다음 deviceStatus 속성을 정의하고 "online" 문자열에 할당합니다.

class SmartDevice {

    val name = "Android TV"
    val category = "Entertainment"
    var deviceStatus = "online"

    fun turnOn(){
        println("Smart device is turned on.")
    }

    fun turnOff(){
        println("Smart device is turned off.")
    }
}

smartDevice 변수 다음 줄에서 println() 함수를 호출한 다음 이 함수에 "Device name is: ${smartTvDevice.name}" 문자열을 전달합니다.

fun main(){
    val smartTvDevice = SmartDevice()
    println("Device name is: ${smartTvDevice.name}")
    smartTvDevice.turnOn()
    smartTvDevice.turnOff()
}

코드를 실행합니다.

출력은 다음과 같습니다.

Device name is: Android TV
Smart device is turned on.
Smart device is turned off.

속성의 getter 함수와 setter 함수

var speakerVolume = 2
    get() = field
    set(value) {
        field = value
    }

속성을 선언할때 getter, setter 를 선언하지 않으면 기본 getter, setter 함수 구문이 자동으로 생성된다

(화면에 표시하지 않고 내부적으로 생성이 되어 있음)

기본적으로 속성에 제한을 걸거나 하지 않는 경우에는 속성 선언만 하면 되고 특정 필드의 값에 제한을 주는 경우

아래 와 같이 직접  setter를 만들어 주면 된다 

* speakerValume 의 값에는 0~100 사이 값만 저장하려고 한다면 아래 와 같이 in 키워드를 사용할 수 있다

var speakerVolume = 2
    set(value) {
        if (value in 0..100) {
            field = value
        }
    }

set() 함수는 in 키워드 뒤에 있는 값 범위를 사용하여 Int 값이 0~100 범위에 속하는지 확인합니다. 값이 예상 범위 내에 있으면 field 값이 업데이트되고 그렇지 않으면 속성 값이 변경되지 않습니다.

반응형