Reputation: 1456
I have created a Kotlin Activity, but I am not able to extend the activity. I am getting this message: This type is final, so it cannot be inherited from
. How to remove final
from Kotlin's activity, so it can be extended?
Upvotes: 74
Views: 34707
Reputation: 2336
class Base
Simple add open for super/parent class:
open class Base
Upvotes: 1
Reputation: 6422
In Kotlin, the classes are final by default that's why classes are not extendable.
The open annotation on a class is the opposite of Java's final: it allows others to inherit from this class. By default, all classes in Kotlin are final. Kotlin - Inheritance
open class Base(p: Int)
class Derived(p: Int) : Base(p)
Upvotes: 26
Reputation: 1456
By default the Kotlin activity is final, so we cannot extend the class.
To overcome that we have to make the activity open
so that, it can be extendable.
as like open class BaseCompatActivity : AppCompatActivity() { }
Upvotes: 28
Reputation: 996
As per Kotlin documentation, open annotation on a class is the opposite of Java's final. It allows others to inherit from this class. By default, all classes in Kotlin are final.
open class Base {
open fun v() {}
fun nv() {}
}
class Derived() : Base() {
override fun v() {}
}
Refer :https://kotlinlang.org/docs/reference/classes.html
Upvotes: 92