Interfaces
An interface is nothing more than a contract; it contains definitions for a set of related functionalities. The implementer of the interface has to adhere to the interface the contract and implement the required methods. Just like Java 8, a Kotlin interface contains the declarations of abstract methods as well as method implementations. Unlike abstract classes, an interface cannot contain state; however, it can contain properties. For the Scala developer reading this book, you will find this similar to the Scala traits:
interface Document {
val version: Long
val size: Long
val name: String
get() = "NoName"
fun save(input: InputStream)
fun load(stream: OutputStream)
fun getDescription(): String {
return "Document $name has $size byte(-s)"}
}
This interface defines three properties and three methods; the name property and the getDescription methods provide the default implementation...