Java's 'EXTENDS'

 

In Java we have extends keyword which mean that some type we pass must extend some other. In Kotlin we do it like this (Extends.kt):

 

abstract class Airplane {

abstract fun decribeMe();

}

 

class Boeing : Airplane() {

override fun decribeMe() {

println("Being")

}

}

 

class Airbus : Airplane() {

override fun decribeMe() {

println("Airbus")

}

}

 

class AirplaneDescriptor {

fun <T : Airplane> describe(airplane: T) {

airplane.decribeMe()

}

}

 

fun tryExtendsExample(){

val airplane1 = Airbus()

val airplane2 = Boeing()

val descriptor = AirplaneDescriptor()

 

descriptor.describe(airplane1)

descriptor.describe(airplane2)

}

 

Running tryExtendsExample() method gives console output:

 

Airbus

Boeing