kotlin精讲-第3章(3)主构_次构_初始化方法

作者: 739c8d412b4c | 来源:发表于2017-12-04 19:16 被阅读272次

主构函数

我们知道Java在类定义的时候,可以定义构造方法,构造方法函数可以在类被创建的时候,接收外界传入的一些值。

Kotlin在类定义的时候,在类名后面加上小括号,变成了函数形式。我们在小括号内就可以直接定义类创建的时候可以接收的值,并可以把接收的值赋值给变量,达到Java里面构造函数的作用,我们称这样的函数为主构函数。参考案例:

针对以上代码我们定义了的Person类带主构喊,在创建Person对象的时候,可以传入一个String类型的name和一个Int类型的age,并把传入的值赋值给了变量。就这点而言,比Java单独定义一个构造函数还是要简便一些。

更进一步,在主构函数上,我们还可以为每一个变量加上一个val或者var修饰符,这样就表示,为该类定义了一个对应的成员属性,这样就免去了在类里面定义成员属性的麻烦,参考代码:

通过这样的方式,Kotlin定义类就比Java简洁一些了。我们还可以为主构函数中的每个成员属性定义一个默认值。这样在创建对象的时候既可以使用有参函数也可以调用无参函数。参考案例:

针对以上代码我们看到,主构函数的参数如果带默认参数之后,我们在调用主构函数的时候,配合命名参数,创建对象的时候,则可以有多种多样的形式,在Java里面可能需要多个构造方法才能满足。

次构函数

Kotlin的主构函数确实给我们带来了很多的方便,在编程开发过程中,能用主构函数,我们优先去用主构函数。其实Kotlin同样允许你像Java一样在类的内部定义构造函数,我们称这样的构造函数为次构函数。

使用次构函数的时候,分两种情况,一种是类不存在主构函数,一种是类存在主构函数。

我们先看类不存在主构函数的情况,我们把Person类修改为通过次构函数创建的情况,参考代码:

针对以上代码看上去是不是很熟悉,和我们Java的构造函数很类似。而且次构函数在写的时候,也不用完成自己去敲,IDEA给我们提供了快捷的创建,在类里面右键点击Generate,参考截图:

当然,也可以直接用Generate操作的快捷键Alt+Insert。

我们再看类存在主构函数的情况,如果类存在主构函数,次构函数需要对主构函数里面成员属性的值赋值,参考代码:

针对以上代码的第4行,就是次构函数。因为存在主构函数,所以我们通过“:this(name)”对主构函数成员变量进行了赋值。

注意次构函数不能像主构函数那样,通过加上var或者val修饰符,让方法参数变成类的成员属性,次构函数只能接收值,参考截图:

初始化方法

Java的类里面可以包含静态初始化快、实例初始化快。Kotlin为类提供了初始化方法。可以利用完成一些初始化操作,针对初始化方法,我们重点需要知道他的执行时机,通过案例,我们演示下,初始化方法的执行时机,参考案例:

针对以上代码我们看到两点。第一,调用了主构函数或者次构函数,都会触发初始化方法。第二,初始化方法在次构函数之前被执行。

相关文章

  • kotlin精讲-第3章(3)主构_次构_初始化方法

    主构函数 我们知道Java在类定义的时候,可以定义构造方法,构造方法函数可以在类被创建的时候,接收外界传入的一些值...

  • Kotlin学习笔记(四)

    Kotlin里面定义成员变量,默认生成get set方法 主构函数和次构函数

  • Kotlin学习(三) : 函数

    学习笔记 1,主构函数和次构函数constructor ,调用了次构函数,也会先调主构函数.再执行次构函数cons...

  • deinit析构函数

    init 构造函数,初始化方法 deinit 析构函数,反初始化方法 deinit 和OC中的 dealloc 一...

  • GeekBand OC 5. 初始化器与析构器

    初始化器(初始化) 对象初始化器:-(id) 类型初始化器:+(void) 析构器(释放) 对象析构器:-(voi...

  • 《Swift从入门到精通》(十三):反初始化(析构过程)

    反初始化(析构过程)类实例销毁之前会立即调用析构器,用关键字 deinit 反初始化(析构过程)如何工作Swift...

  • Kotlin基础2

    kotlin的构造方法 在kotlin中,一个类可以有一个primary构造方法以及一个或多个secondary构...

  • Kotlin系列之二:基础(类和对象)

    一.类 但是Kotlin区分 主构造函数和次构造函数,并且,主构造函数是类头的一部分,次构造函数就是位于类内部的构...

  • 对象的创建流程

    1.加载类的信息(属性信息,方法信息)2.在内存开辟空间(堆)3.使用父类的构造器进行初始化(主和辅)4.使用主构...

  • kotlin类和对象

    kotlin使用class声明类 kotlin类由类名、类头、以及由花括号包围的类体构成。类头由参数和主构造函数构...

网友评论

本文标题:kotlin精讲-第3章(3)主构_次构_初始化方法

本文链接:https://www.haomeiwen.com/subject/yqffixtx.html