본문 바로가기

Android 공부

10. 코틀린 overloading & overriding

overloading 과 overriding 은 마주할 때마다 찾아보고 기억했다고 생각하지만 가끔 헷갈리는 경우가 있다. 이번에도 어떤 개념을 정리하면 좋을까 찾아보다가 이 두 키워드를 마주했는데, 다시 한번 정리해보고 싶어서 기록한다. 

 


 

먼저 overloading 은 "과적하다" 라는 뜻에 걸맞게 새로운 메소드를 과적해서 정의하는 것이다. 이 키워드는 상속과는 관련이 없다. 같은 이름의 메서드를 또다시 만드는 것으로 이름만 같고 파라미터를 다르게 하여 메서드를 정의할 수 있다. 

 

fun overloading(){ }

fun overloading(a : Int){ }

fun overloading(str : String){ }

 

다음과 같이 overloading이라는 같은 이름의 메서드지만 다른 파라미터를 받음으로써 메서드를 overloading하게 된다.

 

 

 

반면 overriding 은 상속과 관련이 있는 키워드로 메서드의 동작을 재정의한다. 메서드의 이름, 파라미터 모두 같아야 하고 단지 기능을 수정하거나 추가하는 등의 동작이 가능하다. 

 

open class OverRidingClass(){
			open fun overridingMethod(){}
}

class ChildClass() : OverRidingClass(){
			override fun overridingMethod() = print("override")
}

 

kotlin 에서 overriding 하려면 부모 클래스의 함수 앞에 open키워드를 명시하고, overriding해서 사용할 때는 함수 앞에 overriding을 명시하여 사용할 수 있다. 

 

 

단순해보이지만 가끔 헷갈리는 일이 생겨 이렇게 정리해보았다! 상속과 인터페이스에 대한 정리도 조만간 해볼 예정이다.