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

来源:互联网 发布:2015年江苏省旅游数据 编辑:程序博客网 时间:2024/06/05 08:07

今天更新第二弹。
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方法。
属性可以拥有委托模型,简单说就是可以通过委托随时知某个属性的变化,以及被访问的时机。
属性赋值可以延迟到首次调用的时候,这个在加快类的初始化时将非常有用。比如有的变量我们不希望或者无法在对象构造的时候去赋值(可能缺少某些必要信息),此时我们便可以使用延时初始化。

原创粉丝点击