2016-07-12 54 views
2

阿羅哈!在閱讀Kotling語言參考時,我注意到關於一個類的屬性的關鍵字「private」從來沒有被使用過(總是默認是公有的)。它還表示getters和setter是自動生成的。 所以我創建了類,並將其字段設置爲私有。但是,當我創建該類的對象時,我看不到這些字段,並且沒有setter和getter可用,除非我自己寫它們。 那麼這裏的規則是什麼?將可見性修飾符設置爲默認(公共),或將它們設置爲私有並提供修改器方法? 謝謝。Kotlin的班級屬性應該是私密的,以及如何訪問它們?

回答

10

屬性的整體思想是它將一個字段及其訪問器封裝在一個實體中。如果您需要能夠從外部訪問和修改某個類的屬性,則應該將該屬性公開。如果您需要能夠從外部讀取但不更新它,則可以使用私人訪問者定義公共屬性。

將默認訪問器更改爲自定義訪問器不會影響類的客戶端,因爲在編譯器的引導下,編譯器將始終生成訪問器方法,並且該類的客戶端將使用這些方法,並且不會訪問基礎字段直。

您不應該寫明確的getter或mutator方法,它們與屬性訪問器是分開的。

+0

因此,直接獲得產權幾乎是不可能的?我總是保持公開? (我來自java,一切都應該是私人的)內部如何? – Sermilion

+0

你是什麼意思「直接進入房產」?屬性的後臺字段只能通過反射訪問。如果僅從同一模塊訪問屬性,則應使用「內部」可見性。 – yole

+0

我的意思是和Java一樣,如果你公開了這個領域,你可以在沒有getter和setter的情況下訪問它,這是不好的。但我現在明白了,謝謝。 – Sermilion

相關問題