欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kotlin 类

程序员文章站 2022-05-08 16:44:47
...

类的声明

在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","次构造器")
}

结果:
Kotlin 类

如果类有手动声明主构造函数,每个次构造函数都要,或直接或间接通过另一个次构造函数代理主构造函数。在同一个类中代理另一个构造函数使用 this 关键字:

Kotlin 类

this代表不一定是主构造,也可以是次构造器,一个次构造可以通过调用另一个次构造器,从而达到间接的代理的主构造器

Kotlin 类

执行结果为:
Kotlin 类


getter 和 setter

Kotlin 普通类 类似普通的Java Bean,在类中定义 gettersetter方法.
但是Kotlin中getter,setter函数和java有很大不同

Kotlin 类

如上,我们知道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方法

Kotlin 类

上面是我们修改逻辑,getter自动把param使用toString处理, 而setter则把Number稍微加了一句提示

执行结果为:

Kotlin 类

可以看到即修改成功