变量的定义
类中的属性可以用val和var来表示
var代表可读写的
val代表只读
案例
val name: String = "王怀智"
var age: Int = 12
var compary: String = "山舟网络"
使用/调用
Test().name //不可修改
Test().age=21
Test().compary="北京。。"
Getter和Setter
- var定义的变量,添加get,set
// ------------------------var定义------②----------------------------
var testVar: String = ""
get() = "永远不变"
set(value) {
//field是指属性本身,value是约定俗成的
field = value
}
var testVar1: String = ""
get() = field
set(value) {
field = if (value.isNotEmpty()) value else "null"
}
fun test1() {
//***如果get()给定了值后,set()再怎么变化都不会改变值
testVar = "木有变化"
testVar1 = "有变化啦"
println("testVar的值为+$testVar+$testVar1")
//System.out: testVar的值为+永远不变+有变化啦
}
- val 定义变量,添加get,没有set方法
// ----------------------val定义--------③----------------------------
/*
使用了val之后,将没有set()函数
属性可以默认不赋值,get()必须给定值
*/
val testVal: String
get() = "默认不赋值,没有set"
fun test2() {
PrintlnUtils(testVal)
//System.out: 》》》》》
//System.out: 默认不赋值,没有set
//System.out: 《《《《《
}
可访问修饰符
// ------------------------------④----------------------------
/*
属性的可见性修饰
*/
var varTest3: String = "set不可见"
private set //setter()访问修饰符私有化
var varTest31: String = "get不可修饰为私有化"
// private get //编译器将报错 必须为可见
val varTest32: String = "val set私有化错误"
// private set //编译错误,本来就没有setter方法
fun test3(): String {
/*
这里可以运行setter方发,但是在Kotlin2().varTest3将不能赋值,因为varTest3是私有化的
*/
varTest3 = "将报错,无法运行"
PrintlnUtils(varTest3)
return varTest3
}
编译时的常量
// ------------------------------⑤----------------------------
/*
编译时的常量
在java中称为常量 final
在kotlin中称为常数 const
*/
// const val VAL_CONST=5
/*
直接在类中定义会报错,需要在object中定义
*/
companion object {
//这样就不报错了。
const val VAL_CONST=5
}
网友评论