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

+ Recent posts