Kotlin for Android Developers


 Interfaces and Delegation


Download 1.04 Mb.
Pdf ko'rish
bet65/79
Sana18.06.2023
Hajmi1.04 Mb.
#1588404
1   ...   61   62   63   64   65   66   67   68   ...   79
Bog'liq
Kotlin for Android Developers Learn Kotlin the Easy Way While Developing an Android App ( PDFDrive )

24 Interfaces and Delegation
24.1 Interfaces
Interfaces in Kotlin are more powerful than in Java 7. If you’ve worked with Java 8, similarities are
much closer there. In Kotlin, we can use interfaces the way we are used in Java. Imagine we have
some animals, and some of them can fly. This is the interface we could have for flying animals:
1
interface FlyingAnimal {
2
fun fly()
3
}
Both birds and bats can fly by moving their wings. So let’s create a couple of classes for them:
1
class Bird : FlyingAnimal {
2
val wings: Wings = Wings()
3
override fun fly() = wings.move()
4
}
5
6
class Bat : FlyingAnimal {
7
val wings: Wings = Wings()
8
override fun fly() = wings.move()
9
}
When a couple of classes extend from an interface, it’s very typical they both share the same
implementation. However, Java 7 interfaces can only define the behaviour, but not implement it.
Kotlin interfaces, on the other hand, are able to implement functions. The only difference from a
class is that they are stateless, so the properties that need a backing field will need to be overridden
by the class. The class will be in charge of saving the state of interface properties.
We can make the interface implement the
fly
function:
1
interface FlyingAnimal {
2
val wings: Wings
3
fun fly() = wings.move()
4
}
As mentioned, classes need to override the property:
112


24 Interfaces and Delegation
113
1
class Bird : FlyingAnimal {
2
override val wings: Wings = Wings()
3
}
4
5
class Bat : FlyingAnimal {
6
override val wings: Wings = Wings()
7
}
And now both birds and bats can fly:
1
val bird = Bird()
2
val bat = Bat()
3
4
bird.fly()
5
bat.fly()

Download 1.04 Mb.

Do'stlaringiz bilan baham:
1   ...   61   62   63   64   65   66   67   68   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling