Inheritance
In Kotlin, you can extend not only abstract classes but also regular classes. Let’s explore this by extending our Player
class. Specifically, we’ll create a ConfusedPlayer
class that moves to (y
, x
) instead of (x
, y
) when given the coordinates (x
, y
).
Initially, let’s create a class inheriting from Player
:
class ConfusedPlayer(name: String ): ActivePlayer(name)
Here, the round brackets in the abstract classes signify that arguments can be passed to the parent class constructor, similar to Java’s super
keyword.
However, this code won’t compile. In Kotlin, all classes are final by default, meaning they can’t be inherited unless marked as open. So, let’s modify the ActivePlayer
class to allow for that:
open class ActivePlayer (...) : Moveable(), DiceRoller {
...
}
Next, let’s override the move
method for the ConfusedPlayer
:
class ConfusedPlayer(name : String): Player(name) {
// move...