컴퓨터 언어/코틀린

[Kotlin] 코틀린 데이터 & 이늄 클래스 (data & enum class)

훈츠 2020. 2. 22. 00:16
반응형

안녕하세요. 훈츠 입니다. 오늘은 데이터 클래스와 이늄 클래스에 대해 설명 드려보도록 하겠습니다. 

데이터 클래스 (data class)

일반 클래스에 data 를 붙이면 data 클래스가 됩니다. data 클래스는 코틀린에서 데이터를 저장할 목적으로 만들어진 클래스로 데이터클래스로 선언하면 5가지 기능의 함수가 자동적으로 생성됩니다. 

  • equals() 
  • hashcode()
  • toString()
  • copy()
  • component()
    • x1 는 key값 , x2는 value값을 가져올수 있습니다. 
data class Data(var name:String,var hobby:String, var age:Int){}
fun main() {
    var data = Data("은서", "공부",13)
    println(data.equals(Data("은서","공부",14)))
    println(data.hashCode())
    println(data.toString())
    println(data.copy())
    println(data.component1())
    println(data.component2())
}
//출력내용
false
1611141406
Data(name=은서, hobby=공부, age=13)
Data(name=은서, hobby=공부, age=13)
은서
공부

이늄 클래스(ENUM class)

enum 을 붙이고 class를 선언하면 enum클래스가 됩니다. 클래스 안의 객체들은 관행적으로 상수를 나타낼때 사용하는 대문자로 기술한다. 또한 이늄의 객체들은 고유한 속성을 가질수 있다. 

  • 관행적으로 상수를 나타낼때 대문자로 기술한다.
  • 함수도 선언가능 합니다. 
  • 선언 마지막은 ; 으로 문장의 끝을 알립니다. 
enum class Color(val number:Int){
    RED(1),
    BLUE(2),
    GREEN(3); //마지막은 ; 으로 마무리한다. 
    
    fun isRed() = this == RED //함수도 선언이 가능하다. 

}
fun main() {
    var state = Color.RED
    println(state)
    println(state.compareTo(Color.RED))
    println(state.ordinal) //순서를 나타냅니다. 0,1,2
    println(state.name) //RED 
    println(state.number) //RED안에 가지고있는 숫자
    println(state.isRed()) //함수 호출
}
//출력화면
RED
0
0
RED
1
true

 다른 기능들과 마찬가지로, 적절하게 데이터 클래스와 이늄클래스를 이용하면 코드의 가독성을 높일수있고 효율적으로 프로그램 관리가 가능합니다. 

반응형