Kotlin学习笔记(二)-类和对象

今天更新第二弹。
kotlin的类使用关键词“class”与JAVA一样,分为类名,类头,类体,其中的类头与类体是可选的。
例如:

class Person

    kotlin的类中,可以有一个primary constructor,一个或多个secondary constructors,secondary constructor必须调用primary constructor。primary constructor写在类头。
    例如:
   

class Person constructor(name:String){}

    如果不使用注解或标志符,则可以简写成:

class Person (name:String){}

    如果使用注解或标志符,则不可以简写:

class Person public @inject constructor(name:String){}

    类声明默认为final,如果需要被继承,重写,则在class前加open;
    若需要类初始化的代码则使用init{},在init中可以初始化一些属性,如:

open class Person(name:String){
    lateinit var id:Int
    init{
             id = 1
            //dosomething
     }
}

    **lateinit关键字表示变量不能为空,但是用到时再初始化。
    在定义二级构造函数时,必须直接或间接调用一级构造函数,使用this关键字。

class Person(val name: String) {
    constructor (name: String, paret: Person) : this(name) {
        parent.children.add(this)
    }
}

   创建类实例:

val me:Person("name")

    继承:若父类有一级构造函数,子类必须在一级构造函数中立即初始化。

class Student(name:String):Person(name){}

如果父类没有一级构造函数,则使用super关键字。

constructor(name:String):super(name){}

重写:在需要重写的函数名前加  override  关键字。
需要注意的是,在kotlin中类的成员变量自动加入setter,getter方法。
属性可以拥有委托模型,简单说就是可以通过委托随时知某个属性的变化,以及被访问的时机。
属性赋值可以延迟到首次调用的时候,这个在加快类的初始化时将非常有用。比如有的变量我们不希望或者无法在对象构造的时候去赋值(可能缺少某些必要信息),此时我们便可以使用延时初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值