How is better to pass a lambda function to a class that is used as parent: to pass it as a parameter or to define it in the pasrent class as an abstract lambda and then override it in a child class?
To pass it as a parameter:
open class Weapon(val someFunction: () -> Unit) {
...
}
class TheWeapon() : Weapon({ ... }) {
...
}
Or to define it to define it in the pasrent class as an abstract lambda and then override it in a child class:
abstract class Weapon() {
abstract val someFunction: () -> Unit;
...
}
class TheWeapon() : Weapon() {
override val someFunction: () -> Unit = { ... }
...
}
So what solution is better to use?