Kotlin 类
类的声明
在Kotlin中类的声明使用class关键字.
类实例必须使用构造器方法,Kotlin中区分主构造器
,和次构造器
Koltin 中的类可以有一个
主构造器,以及一个或多个
次构造器,主构造器是类头部的一部分,位于类名称之后
主构造器
主构造器constructor,位于Demo类名之后
class Demo constructor(param:String){
//init 是主构造器的初始化方法
init {
println("初始化$param")
}
}
如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。
//constructor省略
class Demo(param:String){
init {
println("你好!我是 : $param")
}
}
fun main(args: Array<String>) {
Demo("kotlin")
}
输出结果为:
你好!我是 : kotlin
如果主构造器没有参数,可是不需要手动定义,kotlin会自动声明一个不带参数的主构造器
//主构造器没有参数
class Demo{
init {
println("你好!我是 : kotlin")
}
}
次构造器
类可以有 一个或者多个 二级构造(次构造器
),声明必需加前缀constructor:
class Demo {
//次构造器
constructor(param:String){
println("你好! $param")
}
//次构造器
constructor(param:String,param1: String){
println("你好! $param 我是 : $param1")
}
}
fun main(args: Array<String>) {
Demo("kotlin")
Demo("kotlin","次构造器")
}
结果:
如果类有手动声明主构造函数
,每个次构造函数都要,或直接或间接通过另一个次构造函数代理主构造函数。在同一个类中代理另一个构造函数使用 this 关键字:
this
代表不一定是主构造,也可以是次构造器,一个次构造可以通过调用另一个次构造器,从而达到间接的代理的主构造器
执行结果为:
getter 和 setter
Kotlin 普通类 类似普通的Java Bean,在类中定义 getter
和setter
方法.
但是Kotlin中getter,setter函数和java有很大不同
如上,我们知道Kotlin中成员变量,一定要初始化,而且不能为空,为空的话得用?
关键字声明
因为kotlin中 默认给成员变量 实现了 getter 和 setter 方法
/主构造器 跟在类名后面
class Demo {
var param:Any? =null
}
fun main(args: Array<String>) {
val demo =Demo()
demo.param ="set一个值" //setter
val value =demo.param //getter
println(value)
}
当然我们可以根据自己的逻辑,重新定义getter和setter方法
上面是我们修改逻辑,getter
自动把param使用toString处理, 而setter
则把Number稍微加了一句提示
执行结果为:
可以看到即修改成功
上一篇: JavaScript中switch判断容易犯错的一个细节_基础知识
下一篇: Lombok