成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Kotlin中面向?qū)ο蟮膶傩?/h1>

Kotlin中面向?qū)ο蟮膶傩??針?duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名注冊(cè)網(wǎng)站空間、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶(hù)提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶(hù)的口碑塑造優(yōu)易品牌,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。

屬性

class AttrDemo{ 
 private var attr1 : String = ""; 
 protected var attr2 : String = ""; 
 public var attr3 : String = ""; 
 
 var varattr : String = ""; 
 val valattr : String = ""; 
 
 var attr = 1; 
} 

屬性是每個(gè)對(duì)象中最基本的單位,也是必不可少的一部分,與Java一樣,Kotlin也提供了private、protected、public三種聲明變量的方式,不同的是,在Kotlin中如果沒(méi)聲明訪問(wèn)權(quán)限,默認(rèn)認(rèn)為是public類(lèi)型,即在其他任何地方都可以訪問(wèn)。同時(shí),Kotlin提供了var和val用來(lái)表示屬性的讀寫(xiě)權(quán)限,var是可讀寫(xiě)的變量,val則是只讀變量,類(lèi)似于Java中的final。

需要注意,Kotlin對(duì)于空安全的要求非常嚴(yán)格,所以對(duì)于所有的屬性都需要進(jìn)行初始化,因此也可以通過(guò)直接賦值的方式說(shuō)明屬性的類(lèi)型,不一定非在后面通過(guò)冒號(hào)的方式追加。不過(guò)對(duì)于習(xí)慣Java語(yǔ)法的開(kāi)發(fā)者而言可能還是會(huì)注明屬性的類(lèi)型,而習(xí)慣腳本語(yǔ)言的開(kāi)發(fā)者可能會(huì)傾向于直接賦值。

在Kotlin中,get和set方法不是必須的,因?yàn)镵otlin會(huì)自動(dòng)對(duì)get和set方法進(jìn)行處理,變成直接調(diào)用屬性的方式(可參考Kotlin的第一行代碼中的說(shuō)明),但Kotlin還是有自己獨(dú)特的使用get和set的方式

private var attr1 : String 
get() = attr1.toString() 
set(value) { 
 attr1 = value 
} 
 
protected var attr2 : String 
get() { 
 //TODO GET 
 return attr2.toString() 
} 
set(value) { 
 attr2 = value 
} 

Kotlin提供了多種設(shè)置get和set的方法,上面的代碼中展示了兩種get方法和一種set方法,有時(shí)當(dāng)你希望改變get、set的訪問(wèn)權(quán)限或是使用注解時(shí),也可以直接對(duì)get、set進(jìn)行操作

var attr4 : String = "" //一定要初始化 
private set 

接口

和Java類(lèi)似,Kotlin使用interface作為接口的關(guān)鍵詞,和抽象類(lèi)相比,他們都可以包含抽象的方法以及方法的實(shí)現(xiàn),但接口無(wú)法保存狀態(tài)。

interface mInterfaceDemo{ 
 fun function1() 
 fun function2(){ 
   
 } 
} 

和繼承的方式類(lèi)似,實(shí)現(xiàn)接口也是使用冒號(hào)“:”,不過(guò)方法略有不同

class InterfaceDemoImpl : mInterfaceDemo{ 
 override fun function1() { 
  TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
 } 
 
} 

我們可以在接口中申明屬性,但接口中的屬性要么是抽象的,要么提供訪問(wèn)器的實(shí)現(xiàn)。接口屬性不可以有后備字段,而且訪問(wèn)器不可以引用它們。

泛型

泛型是程序設(shè)計(jì)語(yǔ)言的一種特性。允許程序員在強(qiáng)類(lèi)型程序設(shè)計(jì)語(yǔ)言中編寫(xiě)代碼時(shí)定義一些可變部分,那些部分在使用前必須作出指明。像 java 一樣,Kotlin 中的類(lèi)可以擁有類(lèi)型參數(shù)

class GenericDemo<T>(t : T){ 
 var value = t 
} 

通常來(lái)說(shuō),我們需要這樣構(gòu)建一個(gè)對(duì)象

val generic: GenericDemo<Int> = GenericDemo<Int>(1) 

但如果類(lèi)型是需要推斷的,也可以通過(guò)傳入忽略類(lèi)型的參數(shù)進(jìn)行創(chuàng)建

val generic = GenericDemo(1) 

嵌套類(lèi)

Kotlin中的類(lèi)也可以嵌套在別的類(lèi)中

class Outer { 
 private val bar: Int = 1 
 class Nested { 
  fun foo() = 2 
 } 
} 

可以通過(guò)inner修飾符增加一個(gè)對(duì)外部類(lèi)的引用,使得內(nèi)部類(lèi)可以調(diào)用外部類(lèi)的屬性

class Outer { 
 private val bar: Int = 1 
 inner class Inner { 
  fun foo() = bar 
 } 
} 
 
val demo = Outer().Inner().foo() //==1 

對(duì)于匿名內(nèi)部類(lèi),通過(guò)對(duì)象表達(dá)式進(jìn)行創(chuàng)建

mvp_button.setOnClickListener(object : View.OnClickListener{ 
 override fun onClick(v: View&#63;) { 
  TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
 } 
}); 

如果對(duì)象是函數(shù)式的 java 接口的實(shí)例(比如只有一個(gè)抽象方法的 java 接口),我們可以用一個(gè)帶接口類(lèi)型的 lambda 表達(dá)式創(chuàng)建它。

mvp_button.setOnClickListener { 
 startActivity(Intent(MainActivity@this,MVPActivity::class.java)) 
} 

枚舉類(lèi)

枚舉類(lèi)最基本的用法就是實(shí)現(xiàn)類(lèi)型安全的枚舉,每個(gè)自舉常量都是一個(gè)對(duì)象。枚舉常量通過(guò)逗號(hào)分開(kāi)。

enum class Direction { 
 EAST,NORTH,SOUTH,WEST 
} 

因?yàn)槊總€(gè)枚舉對(duì)象都是一個(gè)實(shí)例,所以我們可以對(duì)其進(jìn)行初始化

enum class Color(val rgb: Int) { 
 RED(0xFF0000), 
 GREEN(0x00FF00), 
 BLUE(0x0000FF) 
} 

當(dāng)我們需要調(diào)用枚舉對(duì)象的內(nèi)容時(shí),可以通過(guò)valueof獲取某個(gè)枚舉對(duì)象的值,或者通過(guò)values獲取所有枚舉對(duì)象

Direction.EAST 
Direction.valueOf("EAST"); 
Direction.values() 

需要注意,如果指定的名字在枚舉類(lèi)中沒(méi)有任何匹配,那么valueOf()方法將會(huì)拋出參數(shù)異常

關(guān)于Kotlin中面向?qū)ο蟮膶傩詥?wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

本文題目:Kotlin中面向?qū)ο蟮膶傩?/a>
本文路徑:
http://jinyejixie.com/article8/ijgsip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、云服務(wù)器域名注冊(cè)、虛擬主機(jī)、自適應(yīng)網(wǎng)站微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
沂源县| 孟连| 嵊州市| 武功县| 绥滨县| 敦煌市| 加查县| 汝城县| 博爱县| 法库县| 田阳县| 铜鼓县| 五峰| 双牌县| 诏安县| 汪清县| 昌图县| 曲松县| 闽清县| 屏山县| 南江县| 兴仁县| 信阳市| 富源县| 灵寿县| 锦州市| 黎城县| 公主岭市| 佛冈县| 阆中市| 施甸县| 镇远县| 黄梅县| 宜昌市| 永嘉县| 洪洞县| 武清区| 普格县| 乾安县| 湟源县| 修水县|