ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] Override
    Kotlin 2022. 9. 14. 15:35
    package days02
    
    fun main(){
        val obj2:SubClass2 = SubClass2()
        // 오버라이딩 된 메서드를 실행함
        obj2.superMethod2()
        // 부모클래스의 래퍼런스변수에 자식클래스의 인스턴스를 저장함
        val obj3:SuperClass2 = SubClass2()
        // 부모클래스의 래퍼런스 변수로 호출한 메서드는 
        // 자식 클래스에서 재정의된 메서드가 우선 실행됨
        obj3.superMethod2()
        println()
    
        testFun(obj2) // 전달인수로 자식 인스턴스 주소를 저장하고 있는 자식 클래스 참조변수 전달
        testFun(obj3) // 전달인수로 자식 인스턴스 주소를 저장하고 있는 부모 클래스 참조변수 전달
    
        val obj4: SuperClass2 = SuperClass2()
        testFun(obj4)
    }
    
    // SuperClass2를 상속받은 모든 자식클래스의 인스턴스는 전달인수로 전달될 수 있음
    fun testFun(obj:SuperClass2){
        obj.superMethod2()
    }
    
    open class SuperClass2{
        // 오버라이드 될 부모클래스의 메서드는 반드시 앞에 open을 붙여서 씀
        open fun superMethod2(){
            println("superMethod2 of SuperClass2")
        }
    }
    
    class SubClass2: SuperClass2(){
        override fun superMethod2(){
            // super.superMethod2() 
            // 부모클래스의 오버라이딩 되기 전 메서드 호출: super 키워드 이용
            println("Overridden superMethod2 of SubClass2")
        }
    }

    'Kotlin' 카테고리의 다른 글

    [Kotlin] this, super  (0) 2022.09.14
    [Kotlin] Any Class  (0) 2022.09.14
    [Kotlin] Extends  (0) 2022.09.14
    [Kotlin] Constructor  (0) 2022.09.14
    [Kotlin] Class  (0) 2022.09.14

    댓글

Designed by Tistory.