1. 인터페이스 정의하기
- 추상 함수: 시그니처만 선언하고 몸체의 구현코드가 없는 함수
- 인터페이스: 속성명, 추상 함수로 구성됨 인스턴스화 할 수 없음
interface Fightable{
var healthPoints: Int
var diceCount: Int
var diceSides: Int
var damageRoll: Int
fun attack(opponent: Fightable): Int
}
2. 인터페이스 구현하기
class Player(_name: String,
override var healthPoints: Int = 100,
var isBlessed: Boolean = false,
private var isImmortal: Boolean) : Fightable {
override val diceCount = 3
override val diceSides = 6
override fun attack(oppont: Fightable): Int {
val damageDealt = if(isBlessed) {
damageRoll * 2
} else {
damageRoll
}
opponent.healthPoints -= damageDealt
return damageDealt
}
}