class Product(val name: String, val price: Int)
interface Wheel {
fun roll()
}
//Kotlin에서는 인터페이스도 상위 인터페이스를 가질 수 있다.
interface Cart : Wheel {
//kotlin에서는 인터페이스의 Property도 존재 가능하다.
var coin: Int //MyCart Class에서 무조건 구현해야 하는 추상 프로퍼티다.
val weight : String
get() = "20KG"
fun add(product: Product)
fun rent() {
if (coin > 0) {
println("카트를 대여합니다.")
}
}
override fun roll() {
println("카트가 굴러갑니다.")
}
}
interface Order {
fun add(Product : product) {
println("${product.name} 주문이 완료 되었습니다.")
}
}
//Kotlin에서는 하나 이상의 인터페이스를 구현 할 수 있다.
class MyCart(override var coin: Int) : Cart, Order {
//Cart 인터페이스에서 구현해야하는 추상함수이기 때문에 오버라이드를 통해서 함수 생성
override fun add(product: Product){
if (coin <= 0) println("코인을 넣어주세요.")
else println("${product.name}이(가) 카트에 추가됐습니다.")
}
//복수개의 인터페이스에서 함수를 호출 할려고 하면 super<>키워드로 접근 가능하다.
super.add(product) //장난감 주문이 완료 되었습니다.
}
fun main() {
val cart = MyCart(coin = 100)
cart.rent() //카트를 대여합니다.
cart.roll() //카트가 굴러갑니다.
cart.add(Product(name="장난감",price = 1000)) //장난감이(가) 카트에 추가됐습니다.
}
특징:
①. Kotlin에서는 인터페이스에서도 상위 인터페이스를 가질 수 있다.
②. Kotlin에서는 Interface의 Property도 존재 가능 하다. "var coin: Int"
MyCart Class에서 무조건 구현해야 하는 추상 프로퍼티다. class MyCart(override var coin: Int) ③. 복수개의 인터페이스에서 함수를 호출하려고 하면 super <> 키워드로 접근 가능하다.
출처 : FastCampus
'Kotlin' 카테고리의 다른 글
Kotlin 08. 상속 (0) | 2023.04.02 |
---|---|
Kotlin.07 자바와 코틀린의 차이점 (0) | 2023.04.02 |
Kotlin.06 클래스와 프로퍼티 (0) | 2023.04.02 |
Kotlin 05.예외처리 (0) | 2023.04.02 |
Kotlin 04. 널 참조 (0) | 2023.04.02 |