ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] Interface
    Kotlin 2022. 9. 14. 15:46
    package days02
    
    fun main(){
        val obj31 = TestClass31()  // Inter1 을 상속(구현)받은 자식클래스
        val obj32 = TestClass32()  // Inter2 를 상속(구현)받은 자식클래스
        val obj33 = TestClass33()  // Inter1, Inter2 을 상속(구현)받은 자식클래스
        obj1.inter1_Method1()
        obj1.inter1_Method2()
        obj2.inter2_Method1()
        obj2.inter2_Method2()
        obj3.inter1_Method1()
        obj3.inter2_Method1()
        obj3.inter1_Method2()
        obj3.inter2_Method2()
        // 부모중  해달 인터페이스가 있는 객체만 전달인수로 사용이 가능
        testFun31( obj1 )  // obj32 는 전달할수 없음
        testFun32( obj2 )  // obj32 는 전달할수 없음
        testFun31( obj3 )  // Inter1 이 구현되었으므로 전달인수로 전달 가능
        testFun32( obj3 )  // Inter2 이 구현되었으므로 전달인수로 전달 가능
    }
    fun testFun1( obj:Inter1 ){
        obj.inter1Method1()
        obj.inter1Method2()
    }
    fun testFun2( obj:Inter2 ){
        obj.inter2Method1()
        obj.inter2Method2()
    }
    
    // 인터페이스 : 추상클래스가 할 수 없었던 다중 상속이 가능
    // 자바의 버젼이 업그레이드 되면서, 인터페이스에도 override 의 강제성이 부여되지 않은 일반 변수메서드 선언이 가능
    interface Inter1{
        fun inter1Method1(){
            println("Inter1의 inter1Method1입니다")
        } //  override  강제성이 부여되지 않은 메서드
        fun inter1Method2() //override 강제성이 부여된 메서드
    }
    interface Inter2{
        fun inter2Method1(){
            println("Inter2의 inter2Method1입니다")
        }
        fun inter2_Method2()
    }
    
    // 인터페이스의 구현은 자식 클래스 이름 옆에 ":" 과 함께 ()괄호 없이 인터페이스의 이름만 기술
    class TestClass51:Inter1{
        override fun inter1_Method2() {
            println("TestClass51의 오버라이딩 된 Method2 입니다")
        }
    }
    class TestClass52 : Inter2{
        override fun inter2_Method2() {
            println("TestClass52의 오버라이딩 된 Method2 입니다")
        }
    }
    
    // 두 개이상의 인터페이스를 구현하려면 인터페이스 이름들을 "," 로 구분하여 기술
    class TestClass53 : Inter1, Inter2{
        override fun inter1_Method2() {
            println("testClass53의 inter1에서 오버라이딩 된 Method2 입니다")
        }
        override fun inter2_Method2() {
            println("testClass53의 inter2에서 오버라이딩 된 Method2 입니다")
        }
    }
     

     

     

    'Kotlin' 카테고리의 다른 글

    [Kotlin] TypeCasting  (0) 2022.09.14
    [Kotlin] Companion  (0) 2022.09.14
    [Kotlin] Abstract  (0) 2022.09.14
    [Kotlin] this, super  (0) 2022.09.14
    [Kotlin] Any Class  (0) 2022.09.14

    댓글

Designed by Tistory.