open class SuperClass1
class SubClass1 : SuperClass1(){
fun subMethod1(){
println("SubClass1의 subMethod1 입니다")
}
}
obj3 as SubClass1
obj3.subMethod1()
변수의 타입을 다른 클래스 타입으로 변환하는 연산자 상속 관계에 있거나 구현한 인터페이스 관계가 있을 경우에만 성공한다.
val super3:SuperClass1 = SubClass1()
if(super3 is SubClass1){
super3.subMethod1()
}
참조변수를 통해 접근할 수 있는 객체에 원하는 클래스의 영역이 있는 경우 자동으로 형변환을 해준다. if 문 밖으로 나가면 형변환 되지 않은 상태가 된다.
// 열거형 정의
enum class Direction{
NORTH, SOUTH, WEST, EAST
}
enum class Number(val num:Int, val str:String){
ONE(1, "일"), TWO(2, "이"), THREE(3, "삼")
}
프로그램 개발 시 특정 그룹안의 구성 요소를 정의하는 값이 필요하고자 할 때 사용한다. 월을 나타내는 단어들, 혈액형을 나타내는 단어들, 방향, 성별 등을 나타낼 수 있다.
열거형
을 정의할 때 값도 설정할 수 있다. 주 생성자는 열거형 하나를 만드는 양식을 의미한다. 변수의 개수는 무제한이다.
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()
}
자기를 상속받은 클래스들을 모아 관리하는 개념