[TECHIT] 코틀린 6

hegleB·2023년 5월 26일
0
post-thumbnail

스마트 캐스팅

open class SuperClass1

class SubClass1 : SuperClass1(){
    fun subMethod1(){
        println("SubClass1의 subMethod1 입니다")
    }
}

as

    obj3 as SubClass1
    obj3.subMethod1()

변수의 타입을 다른 클래스 타입으로 변환하는 연산자 상속 관계에 있거나 구현한 인터페이스 관계가 있을 경우에만 성공한다.

 val super3:SuperClass1 = SubClass1()
    if(super3 is SubClass1){
        super3.subMethod1()
    }
    

참조변수를 통해 접근할 수 있는 객체에 원하는 클래스의 영역이 있는 경우 자동으로 형변환을 해준다. if 문 밖으로 나가면 형변환 되지 않은 상태가 된다.

enum 클래스

// 열거형 정의
enum class Direction{
    NORTH, SOUTH, WEST, EAST
}

enum class Number(val num:Int, val str:String){
    ONE(1, "일"), TWO(2, "이"), THREE(3, "삼")
}

프로그램 개발 시 특정 그룹안의 구성 요소를 정의하는 값이 필요하고자 할 때 사용한다. 월을 나타내는 단어들, 혈액형을 나타내는 단어들, 방향, 성별 등을 나타낼 수 있다. 열거형을 정의할 때 값도 설정할 수 있다. 주 생성자는 열거형 하나를 만드는 양식을 의미한다. 변수의 개수는 무제한이다.

sealed 클래스

sealed class Number2{
    
    open fun number2Method(){
        println("number2 메서드 입니다")
    }
    
    class OneClass(var a1:Int, var a2:Int) : Number2()
    class TwoClass(var a1:Int) : Number2(){
        fun twoMethod(){
            println("TwoClass의 메서드 입니다")
        }

        override fun number2Method(){
            println("overriding된 number2메서드")
        }
    }
    class ThreeClass(var a1:Int, var a2:Double) : Number2()
}

자기를 상속받은 클래스들을 모아 관리하는 개념

profile
성장하는 개발자

0개의 댓글

관련 채용 정보