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...