class AA{
init {
}
}
1.这是一个最简单的类,他没有在头部做任何构造器的声明,这时他拥有一个默认的无参构造器,而这个构造器的内容要放在init块中。如果构造器没有操作的话,init可以省略。
如果不想暴露这个构造器,可以在声明时设为private:
class AA private constructor()
(1)我们经常使用的一种构造器是传入参数为类的属性赋值,这里kotlin可以简化为直接声明一个带参构造器,不必声明属性:
class AA (name:String,id:String)
(2)在类中创建其他构造器:
class AA(a:Int) {
constructor(a:Int,b:Int):this(a){
}
}
直接声明的构造器是顶级构造器,类中其他构造器需要调用这个构造器并向里面传值。如果没有直接声明任何构造器则无需。
3.继承
带有open修饰符的类才能被继承,带有open的函数才能被重写。
继承的时候必须指出父类构造器,有参数要往里面传参数:
class App : Application()
类中的构造器也要往声明的父类构造器里传参数:
constructor(ctx: Context) : super(ctx) {
}
Kotlin的单例模式巨简单,只需要把类的class关键字换成object即可,调用的时候直接用类名。需要注意的object修饰符不支持任何构造器。
类中可以有伴生对象,用法和静态属性一样,这个对象的名字可以省略,默认为Companion:
class HuabanService {
companion object A{
有趣的是,被这个伴生对象包住的方法可以用类名直接引用,相当于静态方法,所以类中的静态方法可以用这么一个伴生对象包起来。