-
[Kotlin] InterfaceKotlin 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