추상 인터페이스를 치나요
추상화에 인터페이스를 넣음 복잡하여 망해요.
이거는 프로그래머한테는 재정의 규격을 주고 서비스에서 여러가지 규격을 같은 블록에서 치는 거여요.
// 1. 인터페이스나 오픈 클래스를 정의하고 함수를 선언합니다
interface Shape {
fun draw() // 인터페이스 내 함수는 자동으로 오픈(open) 상태입니다
}
// 2. 함수를 오버라이드할 것이라고 선언하지만
// 구현은 추상 클래스로 남겨둔 추상 클래스를 생성합니다
abstract class WildShape : Shape {
// 이 추상 클래스는 'draw' 함수를 오버라이드하겠다고 약속하지만,
// 실제 구현은 하위 클래스에 위임합니다.
abstract override fun draw()
}
// 3. 구체적인 하위 클래스에서 최종 구현을 제공합니다
class MyWildShape : WildShape() {
override fun draw() {
println("MyWildShape을 그립니다")
}
}
fun main() {
val mws = MyWildShape()
mws.draw() // 출력: MyWildShape을 그립니다
}