kotlin构造方法
构造方法
参考
Kotlin-简约之美-进阶篇(七):主构造方法和次构造方法 - 简书 (jianshu.com)
主构造方法 是声明在类名后面 不是类体
当我们定义一个类时,我们如果没有为其显式提供Primary Constructor,Kotlin编译器会默认为其生成一个无参主构造,这点和Java是一样的。 可以只有次构造方法,没有主构造方法 主构造是默认生成
主构造函数的参数加上 var 和 val 这只是声明属性以及从主构造函数初始化属性的一种简洁的语法,意思是将该变量作为类的成员变量来使用,是因为主构造函数是类头的一部分吧,在这里直接声明属性使得属性的声明变得很方便、简洁。
-
class Person(private val username: String, private var age: Int){}
-
或者
-
class Person(val username: String, var age: Int){}
-
-
那么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
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13