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,在类中定义 gettersetter方法.
但是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稍微加了一句提示

执行结果为:

这里写图片描述

可以看到即修改成功

猜你喜欢

转载自blog.csdn.net/zybieku/article/details/80367634