1、类,学过oop的小伙伴都不陌生。
2、新建Person0.kt
import java.util.*
class Person0 constructor(firstName: String) {
//constructor 可以删除
init {
println("FirstName is $firstName")
}
var lastName: String = "zhang"
get() = field.uppercase(Locale.getDefault()) // 将变量赋值后转换为大写
//Redundant setter:默认
set(value){
field = value;
}
var no: Int = 100
//Redundant get:默认
get() = field // 后端变量
set(value) {
if (value < 10) { // 如果传入的值小于 10 返回该值
field = value
} else {
field = -1 // 如果传入的值大于等于 10 返回 -1
}
}
fun msgInfo(): String {
println("我是类的函数")
return "finish"
}
}
新建文件ClassObjectTest.kt
fun main(args: Array<String>) {
var person: Person0 = Person0("蒋")
person.lastName = "wang"
println("lastName:${person.lastName}")
person.no = 9
println("no:${person.no}")
person.no = 20
println("no:${person.no}")
println(person.msgInfo())
}
3、输出
4、说明:
- val:只读属性 默认get
- var:可读可写属性 默认get ,set
- get,set方法,如果没有逻辑变化,可以直接省略不写,否则就是冗余代码。
- class名后面可以直接跟上(参数),用于传构造函数的参数,初始化。
- class函数可以直接调用,但不能定义与属性一致的方法,否则会报错。