class
Classes in Kotlin are declared using the keyword class:
class Runoob { // class name is Runoob
// .......
}
We can use constructors to create class instances just like normal functions
val site = Runoob() // in Kotlin ,there don't have new keyword
getter & setter
The following example defines a person class with two variable variables lastName and no. lastName modifies the getter method and no modifies the setter method:
class Person {
var lastName: String = "zhang"
get() = field.toUpperCase() // Convert variable to uppercase
set
var no: Int = 100
get() = field
set(value) {
if (value < 10) {
field = value
} else {
field = -1
}
}
var heiht: Float = 145.4f
private set
}
// test
fun main(args: Array<String>) {
var person: Person = Person()
person.lastName = "wang"
println("lastName:${person.lastName}") // output:lastName: Wang
person.no = 9
println("no:${person.no}") // output:no: 9
person.no = 20
println("no:${person.no}") // // output:no: -1
}
abstract class
Abstract members have no implementation in the class.
Note: there is no need to annotate an abstract class or member with an open annotation.
open class Base {
open fun f() {}
}
abstract class Derived : Base() {
override abstract fun f()
}
inner class
Inner classes are represented by the inner keyword.
The inner class will have a reference to the object of the outer class, so the inner class can access the external class member properties and member functions
class Outer {
private val bar: Int = 1
var v = "member property"
/**inner class**/
inner class Inner {
fun foo() = bar // outer class number
fun innerTest() {
var o = this@Outer
println("inner class can use outer class number,eg:" + o.v)
}
}
}
fun main(args: Array<String>) {
val demo = Outer().Inner().foo()
println(demo) // 1
val demo2 = Outer().Inner().innerTest()
println(demo2) //inner class can use outer class number,eg:member property
}
Top comments (0)