In
my previous post, I explained how to override methods, overriding of properties
is similar to overriding of methods.
Below
step by step procedure explains, how to override a property.
Step 1: Define a variable
with open modifier in Base class.
open
class BaseClass {
open var name: String = "Base
Class"
}
Step 2: In sub class redefine
the variable with same name using override modifier.
open
class DerivedClass : BaseClass() {
override var name: String =
"Derived Class"
}
Find
the below working application.
Inheritance.kt
open class BaseClass { open var name: String = "Base Class" } open class DerivedClass : BaseClass() { override var name: String = "Derived Class" } fun main(args: Array<String>) { var obj = DerivedClass() println("name : $obj.name") }
Output
name : Derived Class
Can I override a val
property with var property?
Yes,
you can override a val property with a var property.
Inheritance.kt
open class BaseClass { open val name: String = "Base Class" } open class DerivedClass : BaseClass() { override var name: String = "Derived Class" } fun main(args: Array<String>) { var obj = DerivedClass() println("name : ${obj.name}") }
Can I override a var
property with val property?
No,
you can’t override a var property with val property.
Inheritance.kt
open class BaseClass { open var name: String = "Base Class" } open class DerivedClass : BaseClass() { override val name: String = "Derived Class" } fun main(args: Array<String>) { var obj = DerivedClass() println("name : ${obj.name}") }
When
you try to compile above program, you will end up in below compilation error.
ERROR: Var-property
public open val name: String defined in DerivedClass cannot be overridden by
val-property public open var name: String defined in BaseClass (6, 11)
No comments:
Post a Comment