类
Kotlin 中使用 关键字 Class 声明类
class Invoice{
...
}
//如果类没有内容,可以省略 {}
class Invoice
构造函数
Kotlin 中类可以有主构造函数 和 次构造函数
class Person constructor(firstName :String){
...
}
//如果主构造函数没有任何注释和可见性修饰符 ,则可以省略 **constructor**关键字
class Person(firstName :String){
...
}
主构造函数不能有任何代码块,初始化代码可以放在以 init为关键字的初始化块中
//与常规属性相同,constructor中声明的属性可以是 val (只读)和 var (可变的)
class Person( var firstName :String){
init{
firstName = "vincent"
}
}
次构造函数
class Personal(var firstName : String){
//初始化代码块
//所有init代码块中的代码都在次构造函数之前执行
init {
firstName = "vincnet"
}
//次构造函数 ,
constructor( firstName: String , parent: Parent) : this(firstName){
}
}
可见性修饰符
- public (默认为public)
- private (私人的)
- protected (private + 可以在子类中被看到)
- internal (模块内可见)
继承 -> 要么为继承而设计,并提供文档说明,要么就禁止继承。
//父类使用open 或者 abstract 修饰
open class Base{
open fun v(){
...
}
}
//子类使用 : Base()进行继承
class Gss : Base(){
override fun v() {
super.v()
}
}
对象表达式和对象声明
对象表达式
// 比如使用一个匿名内部类
btn_login.setOnClickListener(object:View.OnClickListener{
override fun onClick(p0: View?) {
}
})
//如果只有一个方法对象 ,继续简化
btn_login.setOnClickListener {
...
}
单例 -> 用 object 修饰类名即可
伴生对象 ->
与java 中的静态方法用法一样 ,(官方推荐使用包级函数)伴生用 companion 关键字标记
class Sample{
companion object Util{
fun sum(a: Int, b:Int ) = a + b
}
}
// 也可以省略伴生对象的名称 ,在这种情况下将使用名称 Companion:
class Sample{
companion object {
fun sum(a: Int, b:Int ) = a + b
}
}