abstract class Super {
val no: Int = 10
abstract val message: String
fun foo() {
println("abstract foo... $no")
}
abstract fun bar()
}
class Sub: Super() {
override val message: String = "hello"
override fun bar() {
println("sub bar... ${message}")
}
}
interface Walkable {
var numberOfLegs: Int
fun walk();
fun getShoes(): String { // 함수 구현 가능
return "Nike"
}
}
interface Eatable {
fun eat(food: String)
}
class Animal {
}
class Human: Walkable, Animal(), Eatable { // 인터페이스는 생성자를 호출하지 않는다.
override fun walk() {
println("human is walking...")
}
override fun eat(food: String) {
println("human is eating ${food}...")
}