[kotlin] 코틀린에서 인터페이스를 구현하는 방법 예시

다음은 코틀린에서 인터페이스를 구현하는 예시입니다.

interface Shape {
    fun getArea(): Double
    fun getPerimeter(): Double
}

class Circle(val radius: Double) : Shape {
    override fun getArea(): Double {
        return Math.PI * radius * radius
    }

    override fun getPerimeter(): Double {
        return 2 * Math.PI * radius
    }
}

class Rectangle(val width: Double, val height: Double) : Shape {
    override fun getArea(): Double {
        return width * height
    }

    override fun getPerimeter(): Double {
        return 2 * (width + height)
    }
}

fun main() {
    val circle = Circle(5.0)
    val rectangle = Rectangle(3.0, 4.0)

    println("Circle area: ${circle.getArea()}")
    println("Circle perimeter: ${circle.getPerimeter()}")

    println("Rectangle area: ${rectangle.getArea()}")
    println("Rectangle perimeter: ${rectangle.getPerimeter()}")
}

위의 예시에서 Shape 인터페이스는 getArea()getPerimeter() 두 가지 메서드를 선언하고 있습니다. Circle 클래스와 Rectangle 클래스는 이 인터페이스를 구현하며, 각각 원과 사각형의 면적과 둘레를 계산하는 메서드를 구현합니다.

main() 함수에서는 CircleRectangle 객체를 생성하고, 해당 객체의 getArea()getPerimeter() 메서드를 호출하여 면적과 둘레를 출력합니다.

이 예시를 실행하면 다음과 같은 결과가 출력됩니다:

Circle area: 78.53981633974483
Circle perimeter: 31.41592653589793
Rectangle area: 12.0
Rectangle perimeter: 14.0

코틀린에서는 인터페이스를 구현하는 방법이 간단하고 명확하며, 객체 지향 프로그래밍의 다형성을 구현하는 데 유용합니다. 추가로, 코틀린에서는 인터페이스에 디폴트 구현을 제공할 수 있는 기능도 제공합니다. 이를테면 Shape 인터페이스에 getColor(): String와 같은 메서드를 추가하고 기본 구현을 제공할 수도 있습니다.