初始化类

  1. 1
    2
    3
    4
    5
    6
    class User (_nickname:String){
    val nickname:String
    init{
    nickname = _nickname
    }
    }
    以上就是一个kotlin类的初始化,他的主构造函数直接写在User类后面,还省略了关键字constructor。但是由于语法结构的问题,他没有函数体,所有就通过init与主构造方法一起使用。
    在类中的元素必须初始化,可以如上图所示,也可以直接赋值。val nickname:String = _nickname
  2. kotlin还可以化简操作,直接把属性声明在主构造函数中
    1
    class User(val nickName;String)
    如上,这个是最简形式

构造方法

kotlin中也可以有很多的从构造方法。而且他们用的不是继承,而是另一个关键词,委托,通过委托,委托其他的构造方法来帮助自己实现构造,他的写法与继承一样,用:来链接。
他可以像java一样写很多的从构造方法,然后可以相互委托,但最后必须也委托给初始化基类,或者另一个这样做了的从构造方法。初始化基类的构造方法:主构造方法(包括父类的主构造方法)。

接口中的属性

在kotlin中,接口可以实现具体的方法,但是他不能有初始化的属性,也就是不能有字段,他的属性只能声明,不能赋值。

1
2
3
interface A{
val name:String
}

实现这个接口的类一定要用override重写这个方法,
可以赋值
也可以定义get方法。
或者定义初始化方法
如果接口中定义了属性的get方法,那么这个属性也可以直接继承,而不用重写

get方法和set方法,还有构造器方法都可以私有化,也就是可以实现一些单例或者静态方法之类的,保证封闭性。