4-3. 코틀린의 클래스 종류

StrayCat·2022년 10월 3일
0

데이터 클래스

data 키워드로 선언하며 자주 사용하는 데이터를 객체로 묶어준다.
VO(value-object)클래스를 편리하게 사용할 수 있다.

data class DataClass(val name:String, val email: String)
  • equals() 함수로 객체가 아닌 객체 내부 데이터를 비교할 수 있다. ( 주 생성자의 변수만 비교한다.)
data1.equals(data2)
  • 주로 주생성자의 매개변수를 var, val로 생성해 멤버변수로 활용한다.
  • toString()을 통해 내부 데이터를 출력할 수 있다.
data.toString()

오브젝트 클래스

코틀린의 오브젝트 클래스는 익명 클래스를 만들 목적으로 사용한다.
클래스 이름이 없어 선언과 동시에 객체를 생성한다.

open class Super{    
    open var data = 10
    open fun some(){
        println("asdf")
    }
}

val obj = object:Super(){
    override var data = 20
    override fun some(){
        println("qwer")
    }
}

object에는 반드시 상속받는 클래스를 뒤에 붙여줘야 한다. 아니면 Any(최상위) 클래스를 상속받는다.


컴패니언 클래스

멤버변수나 함수를 클래스 이름으로 접근하고자 할때 사용한다.

class MyClass{
    companion object {
        var data = 10
        fun some(){
            print("asdf")
        }
    }
}
fun main(){
    MyClass.data = 20
    MyClass.some()
}

자바의 static 같은 역할을 한다. 코틀린은 최상위에 변수를 선언할 수 있어 자바처럼 static의 필요성이 크진 않다.

0개의 댓글