[kotlin] 자바에서 코틀린 메서드 오버라이딩 사용하기

자바에서 코틀린 코드를 사용하다 보면, 자바에서 코틀린으로 작성된 클래스의 메서드를 오버라이딩해야 할 때가 있습니다. 여기에서는 자바에서 코틀린 메서드를 오버라이딩하는 방법에 대해 살펴보겠습니다.

자바 클래스에서 코틀린 메서드 오버라이딩

기존에 작성된 자바 클래스에서 코틀린 메서드를 오버라이딩할 때, 아래의 예시 코드와 같이 @JvmOverloads 어노테이션을 사용하여 코틀린과 자바 코드 간의 호환성을 보장할 수 있습니다.

예시 코드

public class JavaSuperClass {
    public void doSomething(String message) {
        System.out.println(message);
    }
}
class KotlinSubClass : JavaSuperClass() {
    @JvmOverloads
    override fun doSomething(message: String) {
        super.doSomething(message)
    }
}

위의 예시에서 @JvmOverloads 어노테이션은 코틀린에서 기본 매개변수를 처리하는 방식을 자바와 동일하게 만들어 주는 역할을 합니다. 이를 통해 오버로딩된 메서드가 자바에서도 정상적으로 동작할 수 있습니다.

코틀린 클래스에서 코틀린 메서드 오버라이딩

코틀린 클래스에서 다른 코틀린 클래스의 메서드를 오버라이딩할 경우, 일반적인 방법으로 오버라이딩을 적용할 수 있습니다. 코틀린은 자바와 마찬가지로 override 키워드를 사용하여 메서드를 오버라이딩할 수 있습니다.

예시 코드

open class ParentClass {
    open fun doSomething() {
        println("Parent is doing something")
    }
}

class ChildClass : ParentClass() {
    override fun doSomething() {
        println("Child is doing something")
    }
}

위의 예시에서 ParentClassdoSomething 메서드를 ChildClass에서 오버라이딩하고 있습니다.

참고: 코틀린에서는 기본적으로 클래스와 메서드가 상속 가능하도록 open 키워드로 선언되어야 합니다.

이렇듯, 자바에서 코틀린 메서드를 오버라이딩하거나 코틀린 클래스 간에 메서드를 오버라이딩하는 방법을 살펴보았습니다. 이를 통해 자바와 코틀린 간의 상호 운용성을 유지하면서 코드를 개발할 수 있게 됩니다.