Kotlin
// klasa abstrakcyjna (ma konkretną implementację metody "fuel" i schemat metody drive)
abstract class Vehicle(val name: String, var fuel: Float = 1.0F) {
// blok kodu wykonujący się przy inicjalizacji (konstrukcji) klasy
init {
println("Created vehicle $name")
}
fun fuel() {
println("$name fuel: ${fuel*100}%")
}
abstract fun drive()
}
class Car: Vehicle {
constructor(name: String): super(name) // wyraźny konstruktor, pozwalający na zdefniowanie "name" przy inicjalizacji
// definicja funkcji z pomocą schematu funkcji "fuel" z klasy abstrakcyjnej
override fun drive() {
fuel -= .1F
}
}
class Truck: Vehicle("Truck") {
override fun drive() {
fuel -= .2F
}
}
fun main() {
val car = Car("Mercedes")
car.drive()
car.fuel()
val truck = Truck()
truck.drive()
truck.fuel()
}