• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

kotlin构造方法

武飞扬头像
shuangrenlong
帮助1

构造方法

参考

Kotlin-简约之美-进阶篇(七):主构造方法和次构造方法 - 简书 (jianshu.com)

主构造方法 是声明在类名后面 不是类体

当我们定义一个类时,我们如果没有为其显式提供Primary Constructor,Kotlin编译器会默认为其生成一个无参主构造,这点和Java是一样的。 可以只有次构造方法,没有主构造方法 主构造是默认生成

构造函数的参数加上 var 和 val 这只是声明属性以及从主构造函数初始化属性的一种简洁的语法,意思是将该变量作为类的成员变量来使用,是因为主构造函数是类头的一部分吧,在这里直接声明属性使得属性的声明变得很方便、简洁。

  1.  
    class Person(private val username: String, private var age: Int){}
  2.  
    或者
  3.  
    class Person(val username: String, var age: Int){}
  4.  
     
  5.  
    那么user和age 都是成员变量
  • 主构造方法只能有一个
  • init代码块可以有多个
  • init代码块和成员变量都是主构造方法的一部分,都是自上而下初始化
  • 次构造方法可以有多个,如果有主构造此时次构造方法必须直接或间接的调用主构造方法
  • 可以只有次构造方法,没有主构造方法
  • 主次构造方法都没有时,编译器生成默认无参的一个主构造方法
  • 如果子类继承父类,且父类显示的定义了构造方法,那么子类必须也要显示的定义一个构造方法并调用父类的一个构造方法来初始化父类


 

1.1 Kotlin以constructor命名构造函数,Java以类名命名构造函数;
1.2 Kotlin构造可以没有方法体(花括号),Java必须得有(花括号);
1.3 Kotlin init代码块可以做常规初始化处理,Java需要自定义类似init方法并主动调用;


 

Kotlin-构造函数以及init调用顺序

参考  

【Kotlin】Kotlin构造函数、成员变量、init代码块执行顺序_Java-考高分网 (kaotop.com)

Kotlin-构造函数以及init调用顺序 - 简书 (jianshu.com)

主构造函数 -> 声明在init之前的变量赋值 (可以赋值主构造函数里面的参数)->init块->

声明在init之后的变量赋值 (可以赋值主构造函数里面的参数)->次构造函数

其实 反编译成java 会发现 变量声明 和init 可以看成主构造函数的一部分,并且是按声明顺序copy过去的

学新通

class Gouzao(name:String, count :Int) {

    protected var myname = name

    init {
        println("Gouzao init myname = $myname")
    }

    constructor(name:String, count :Int, a:Int):this(name , count){
        println("Gouzao second constructor mycount = $mycount")
    }


    protected var mycount = count

}
学新通
Gouzao("yyy", 12,78)

打印的是结果是:

Gouzao init myname = yyy
Gouzao second constructor mycount = 12

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfckiec
系列文章
更多 icon
同类精品
更多 icon
继续加载