一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Kotlin基礎教程之面向對象

Kotlin基礎教程之面向對象

2020-10-31 23:45天命劍主 Java教程

這篇文章主要介紹了Kotlin基礎教程之面向對象的相關資料,需要的朋友可以參考下

kotlin 面向對象

這幾天一直在準備考試,實在沒有時間,已經過去了這么久,終于要到面向對象了!

先看看kotlin中的類長什么樣吧.

Kotlin基礎教程之面向對象

可以看到kotlin中的類還是很普通的,大多與java相似,比較特殊的有:

每一個構造函數都必須為每一個成員變量賦予初值.

primary constructor,這個構造函數的頭部緊跟在類名之后,函數體卻在類中,是由init關鍵字包含的一個代碼塊,這種函數頭和函數體分開的寫法還是很少有的,其實這兩個部分會被整合成一個構造函數,使用jd-gui反編譯class文件可以看到如下最終生成的那一個構造函數:

Kotlin基礎教程之面向對象

在kotlin中這是一個特殊的構造函數,只能定義一個而且一旦其被定義,則其他構造函數都必須調用它.

等等,好像有什么不對,這個構造函數最前面好像有兩句代碼,其實這兩句代碼是寫在成員變量的初始化值那里,最后編譯器將其塞到了init塊的起始處.如果沒有定義init塊的話,成員變量初始值代碼會被任何一個構造函數首先執行.

接下來我們看看其他的構造函數,在構造函數頭部使用this調用其他構造函數,這里我們看到了一個沒有函數體的構造函數,編譯運行都沒有錯,其實這個函數就只有一句代碼,調用了其他構造函數而已.

在這里我們看到了一個關鍵字open,open關鍵字可以用來允許一個類被繼承,沒錯,不寫open的話類默認是final的,不能被繼承.

而且同樣函數默認也是final的,不能被override,要想重寫父類函數,父類函數必須使用open定義.

不僅如此,在kotlin中,函數參數默認也都是final的.

接下來看看繼承吧,我們為這個類定義一個子類.

Kotlin基礎教程之面向對象

子類不會繼承父類的構造函數,在子類中可以使用super關鍵字調用父類函數,使用override重寫父類函數,重寫父類函數不可以降低函數可視性.

剛才我們說了,每一個構造函數都必須為每一個成員變量賦予初值,讓我們來搞一些破壞,我們在this.z被初始化之前調用show方法,show方法需要訪問this.z字段,而this.z現在還沒有初始化,那么會發生什么呢?讓我們測試一下.

Kotlin基礎教程之面向對象

運行結果如下:

Kotlin基礎教程之面向對象

可以看到最后輸出表示z=0,說明z被編譯器自動默認初始化為0了,然而編譯器不可能總是為你解決這些問題,假設我們的問題復雜一些,待會兒再討論.:-)

然后是多態,讓我們定義一個父類和兩個子類:

Kotlin基礎教程之面向對象

Kotlin基礎教程之面向對象

Kotlin基礎教程之面向對象

我們各自重寫了tostring函數,最后調用其show方法

Kotlin基礎教程之面向對象

這兩個變量都是包含在一個shape3d的類型中的,我們看看運行結果吧

Kotlin基礎教程之面向對象

可以看到多態的實現.

現在讓我們來做一些惡作劇,我們之前說過,如果在成員變量還沒有初始化時就訪問,編譯器會自動賦予一個默認的初值給成員變量,現在我們把triangle3d的構造函數改一下,變成這個樣子:

Kotlin基礎教程之面向對象

在this.c還沒有初始化的時候調用show函數:

Kotlin基礎教程之面向對象

運行結果如下:

Kotlin基礎教程之面向對象

結果發生異常了,說明編譯器并不總能為你的成員變量賦予一個默認的初值.對于復雜的對象,編譯器也愛莫能助.

所以我們最好謹慎的處理這些細節,減少對編譯器特定行為的依賴.

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:https://my.oschina.net/yuanhonglong/blog/474365

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: tobu8中国在线播放免费 | 国产亚洲综合久久 | 欧美日韩亚洲另类人人澡 | 国产精品香蕉在线观看不卡 | 韩剧hd | 亚洲免费色图 | 欧美一级在线播放 | 国产精品久久久久不卡绿巨人 | 国产高清在线精品一区 | 国产精品高清一区二区三区 | 欧美黑人性猛交╳xx╳动态图 | gaychinese男男2022 | 女bbwxxxx非洲黑人 | 日本大片在线 | yy111111免费观看| 好大好爽好涨太深了小喜 | 性夜影院午夜看片 | xxxxyoujizz护士| 久久久高清国产999尤物 | 99re最新网址| 麻生希在线| 国产探花视频 | 日韩在线视频一区二区三区 | 日日精品| 国产成人www免费人成看片 | 日韩永久在线观看免费视频 | 欧美乱强 | 四神集团1涨奶是第几章 | 美女扒开屁股让我桶免费 | 臀控福利大臀的网站 | 国产白虎 | 娇女的呻吟亲女禁忌h16 | aⅴ导航站 | 逼逼流水了 | 4455永久在线视频观看 | 国精品午夜dy8888狼人 | 成人软件18免费 | 娇妻在床上迎合男人 | 97色伦在线观看 | 国产精品青青青高清在线 | 极品虎白女在线观看一线天 |