在kotlin中创建静态变量有三种方式
1.使用object关键字,比如我现在要在User这个类中新建静态变量与静态方法
class User {
object NameFiled{ //---注解1
var name = "张三"
val age = 18
fun printNameAndAge(){
println(name+ age)
}
}
}
fun main() {
println(User.NameFiled.name)
println(User.NameFiled.age)
User.NameFiled.name = "李四"
// User.NameFiled.age = 21 因为age定义成val所以会报错
println(User.NameFiled.name)
// 调用静态方法
User.NameFiled.printNameAndAge()
// 输出结果为
// 张三
// 18
// 李四
// 李四18
}
解读
注解1:object 关键字相当于在当前类新建一个名叫NameFiled的静态内部类,然后var name相当于java中的static String name,val age相当于java中的static final int age,在后面不可以修改
调用方式:外部类名.内部类名.属性或方法
2.使用companion object关键字,实现上面一样的静态属性与方法代码如下
class User2 {
companion object{ // 注解---1
var name = "张三"
val age = 18
fun printNameAndAge(){
println(name+ age)
}
}
}
fun main() {
println(User2.name)
println(User2.age)
User2.name = "李四"
// User2.age = 21 因为age定义成val所以会报错
println(User2.name)
// 调用静态方法
User2.printNameAndAge()
// 输出结果为
// 张三
// 18
// 李四
// 李四18
}
讲解
注解1:companion object关键字是直接给当前类新建括号里面的静态属性和方法,而object是给当前类新建一个内部类,在内部类新建属性和方法,所以companion object后面不需要加别的东西,而object需要加一个内部类的类名
调用方式:因为companion object是直接给当前类创建,所以直接使用:当前类名.属性或方法名就能出来
3.使用顶层声明的方式
例如我现在要实现一个工具类,只需要新建一个kt file
- CalcUtil.kt代码 注意包名
package tyc
/**
* create by elitetyc
* date:2019/9/12
* desc:
*
**/
var tycName = "李四"
val age = 18
fun sum(p1: Int, p2: Int) {
println(p1+p2)
}
- test.kt 代码 注意包名
package tyc
/**
* create by elitetyc
* date:2019/9/12
* desc:
*
**/
fun main() {
println(tycName)
tycName = "臧三"
println(tycName)
println(age)
// age = 21 因为声明为val 所以修改时报错
sum(10,10)
// 输出结果是
// 李四
// 臧三
// 18
// 20
}
解读:
顶层声明的方式,声明的属性与方法,是属于当前包的,当前包下的其他类或方法可以直接使用,使用时直接输属性名或方法名就可以了
网友评论