diff --git a/kotlin-basic/src/main/kotlin/12_enum.kt b/kotlin-basic/src/main/kotlin/12_enum.kt new file mode 100644 index 00000000..67aecfa5 --- /dev/null +++ b/kotlin-basic/src/main/kotlin/12_enum.kt @@ -0,0 +1,41 @@ +enum class PaymentStatus(val label: String): Payable { + UNPAID("미지급") { + override fun isPayable(): Boolean = true + }, + PAID("지급 완료") { + override fun isPayable(): Boolean = false + + }, + FAILED("지급 실패") { + override fun isPayable(): Boolean = false + + }, + REFUNDED("환불") { + override fun isPayable(): Boolean = false + }; + +} + +interface Payable { + fun isPayable(): Boolean +} + +fun main() { + + println(PaymentStatus.REFUNDED.label) + + if (PaymentStatus.UNPAID.isPayable()) { + println("결제 가능 상태") + } + + val paymentStatus = PaymentStatus.valueOf("PAID") + println(paymentStatus.label) + + if (paymentStatus == PaymentStatus.PAID) { + println("결제 완료 상태") + } + + for (status in PaymentStatus.values()) { + println("[${status.name}](${status.label}) : ${status.ordinal}") + } +} \ No newline at end of file