코틀린 4-3 클래스 종류

hong030·2022년 1월 29일
0

//1. data class
data class DataClass(val name:String, val email:String, val age:Int)

data class DataClass2(val name:String, val email:String, val age:Int){
    lateinit var address:String
    constructor(name:String, email: String, age: Int, address:String):
            this(name, email, age){
                this.address = address
            }
}

fun main(){
    val data1 = DataClass("hong", "hongjw030@naver.com",24)
    val data2 = DataClass("kim", "kimjw030@naver.com",22)
    val data3 = DataClass("kim", "kimjw030@naver.com",22)
    println(data2.equals(data3)) //true 값 출력.
    
    val d1 = DataClass2("hong", "hongjw030@naver.com",24, "seoul")
    val d2 = DataClass2("hong", "hongjw030@naver.com",24, "busan")
    println(d1.equals(d2)) //true 값 출력. 즉 주 생성자 변수 데이터만 비교한다!
    println(d1.toString()) //데이터 값 이쁘게 출력
}


//2. object class
//익명 클래스, 클래스 이름이 없기에 선언 동시에 객체 생성해야 함.
//클래스는 항상 타입까지 함께 입력해야 함.
open class Super{
    open var data = 10
    open fun some(){
        println("super data $data")
    }
}

val obj = object : Super(){
    override var data = 20
    override fun some(){
        println("data : $data")
    }
}
fun main(){
    obj.data = 30
    obj.some()
}


//3. companion class
//객체에 접근하는 게 아니라 클래스 자체에 접근하기.
//자바의 static 기능임.
class MyClass{
    companion object{
        var data = 10
        fun some(){
            println(data)
        }
    }
}

fun main(){
    MyClass.data = 20
    MyClass.some()
}
profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글