Kotlin inheritance and visibility modifiers
There are four visibility modifiers in Kotlin: private, protected, internal and public. The default visibility public is used if there is no explicit modifier.
private: visible inside this class only (including all its members)
protected: same as private + visible in subclasses too
internal:any client inside this module who sees the declaring class sees its internal members
public: any client who sees the declaring class sees its public members.
The keyword open allows a class or a property to be inherited and overridden.
// open means the class can be inherited
open class Vehicle(open var name: String) {
private val typeCode = 1
protected open val weight = 5000
internal val width = 2
val height = 4 // public by default
}
// inheriting from Vehicle
class Car(override var name: String) : Vehicle(name) {
// typeCode is not visible
// weight, width and height are visible
override val weight = 3000 // 'weight' is protected
fun getWeightVal(): Int {
return weight
}
}
fun main(args: Array) {
var car = Car("Flash")
println("name = ${car.name}, weight=${car.getWeightVal()}, width=${car.width}, height=${car.height}")
}
Search within Codexpedia
Custom Search
Search the entire web
Custom Search
Related Posts