#34 kotlin basic: interface
This commit is contained in:
52
kotlin-basic/src/main/kotlin/11_Interface.kt
Normal file
52
kotlin-basic/src/main/kotlin/11_Interface.kt
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
class Product(val name: String, val price: Int)
|
||||||
|
|
||||||
|
interface Wheel {
|
||||||
|
fun roll()
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Cart: Wheel {
|
||||||
|
|
||||||
|
val coin: Int
|
||||||
|
|
||||||
|
val weight: String
|
||||||
|
get() = "20kg" // backing field 사용 불가
|
||||||
|
|
||||||
|
fun add(product: Product)
|
||||||
|
|
||||||
|
fun rent() {
|
||||||
|
if (coin > 0) {
|
||||||
|
println("카트를 대여합니다.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun roll() {
|
||||||
|
println("카트가 굴러갑니다.")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Order {
|
||||||
|
|
||||||
|
fun add(product: Product) {
|
||||||
|
println("${product.name} 주문이 완료되었습니다.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyCart(override val coin: Int) : Cart, Order {
|
||||||
|
|
||||||
|
override fun add(product: Product) {
|
||||||
|
if (coin <= 0) println("코인을 넣어주세요.")
|
||||||
|
else println("${product.name}이(가) 카트에 추가됐습니다.")
|
||||||
|
|
||||||
|
// 다중 상속
|
||||||
|
super<Order>.add(product)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val cart = MyCart(coin = 100)
|
||||||
|
cart.rent()
|
||||||
|
cart.roll()
|
||||||
|
cart.add(Product(name = "장난감", price = 1000))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user