Android

[Kotlin] 코틀린 - 클래스 종류

귀뚜래미 2024. 8. 2. 15:44
728x90

데이터 클래스

- data 키워드로 선언, 데이터들을 객체로 묶어준다.

- equals() 함수를 사용해 데이터 클래스의 객체와 포함된 데이터를 비교해 같은 경우 true, 다를 경우 false를 반환한다. 특히 멤버 변수의 값이 달라도 주 생성자에서 선언한 멤버 변수가 같으면 true를 반환한다.

- toString() 함수를 사용해 데이터 클래스의 객체가 포함하는 멤버 변수의 데이터를 출력한다. 일반적인 클래스에서는 의미없는 데이터가 출력되며, equals()와 마찬가지로 주 생성자에서 선언한 멤버 변수의 데이터를 대상으로 출력, 반환된다.

 

오브젝트 클래스

- 익명 클래스이다. 클래스의 이름이 없기 때문에 선언과 동시에 객체를 생성해야한다.

open class Parent{
    open var data = 1
    open fun parentFun(){
        println("parentFun : $data")
    }
}

val obj = object: Parent(){
    override var data = 2
    override fun parentFun(){
        println("objFun : $data")
    }
}

fun main(){
    obj.data = 3
    obj.parentFun() // objFun : 3
}

 

 

컴패니언 클래스

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

- 컴패니언 클래스에서는 객체를 생성하지 않고도 클래스 이름으로 특정 멤버를 호출할 수 있다.

- 클래스 이름으로 멤버에 접근하려면 companion 키워드로 선언해야한다.

class NewClass{
    companion object{
        var data = 1
        fun newFunc(){
            println("NewClass data : $data")
        }
    }
}

fun main(){
    NewClass.data = 150
    NewClass.newFunc()  // NewClass data : 150
}
728x90