第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第6天 一課掌握Kotlin 突破開發(fā)語言瓶頸

標簽:
Kotlin

课程信息

课程内容

构造器的基本写法

class Person(var age: Int, name: String)

参数带有val/var,类内全局可见
参数没有val/var,构造器内可见(init块,属性初始化)

init块

  • 类似主构造器的方法体
  • init块可以有多个
  • init块最终会合并执行

属性必须初始化

Kotlin不会盲目地帮我们初始化属性,开发者必须清楚的认识如何维护属性的生命周期

继承父类

abstract class Animal
class Person(var age: Int, var name: String): Animal()

继承父类是必须调用父类的构造器

副构造器

  • 定义了主构造器后在类内部再定义的构造器都被称为副构造器
  • 副构造器必须调用主构造器,或者调用调用了主构造器的方法,确保构造路径唯一
class Person(var age: Int, var name: String): Animal() {
	constructor(age: Int): this(age, "unknown")
}

Kotlin支持不定义主构造器,但是不推荐这种做法,因为多条构造路径,会增加类的复杂度
图片描述
如果需要实现Java那种多构造器的场景,推荐使用主构造器+默认参数,再加上注释@JvmOverloads

class Person
@JvmOverloads
constructor(var age: Int, var name: String = "unknown") : Animal()

构造同名的工厂函数

class Person(var age: Int, var name: String = "unknown") {
	override fun equals(other: Any?)
		= (other as? Person)?.name?.equals(name) ?: false
	override fun hashCode() = name.hashCode()
}

val persons = HashMap<String, Person>()
fun Person(name: String): Person {
	return persons[name]
		?: Person(1, name).also {persons[name] = it}
}

学习总结

在学习本章的时候,通过与Java的对比,除了可以重温Java一些基础知识,同时也深刻地认识到Kotlin构造器与Java的一些差别,比如Java的构造块和Kotlin的init块类似,但是Java构造块不可以访问构造器的参数,Kotlin的init块可以等等。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消