iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0

今天要介紹的是類別(Class),在物件導向( Object-oriented programming )中,我們可以以生活中的事物來做比喻會比較好理解。

車是一個類別,而這個類別有特有的屬性、行為,甚至這個類別底下還有其他類別( 車有分 TOYOTA、HONDA… )。
以上不懂沒關係,先自動跳過它吧,我們在日後的介紹繼承的時候會對這部分在做更詳細的解說,今天先以如何建構出一個類別為主題吧!


首先,先比較一下如果要建一個名為 Person 的 Class , Java 和 Kotlin 的寫法有什麼差異。

public class Person{
 
    //宣告屬性 
    private final String name; 

    //建構子 
    public Person(String name){ 
        this.name = name; 
    } 
} 

class Person Constructor by Java

//建構子
class Person constructor(_name: String) {

  //宣告屬性
	val name: String

  	//initial block
	init {
		name= _name
	}
}

看到這你一定滿頭問號,Kotlin 不是標榜簡潔程式碼嗎?
怎麼和 Java 比較起來差不多呢?

客官別急,這邊寫的 Kotlin 寫法是最完整的寫法,Kotlin 的省略功力等會兒就展現出來!


在上一篇文中,加法器的範例,在我們宣告變數C時,同時可以賦值給它,很幸運地,這不僅僅適用於整數型態,在各種型態都可以這麼做,包含這次範例的 String ,所以我們可以在宣告變數 name 的同時給予其值,可以將 init block 省略成以下。

//建構子
class Person (_name: String) {

  //宣告屬性
	val name = _name
}

開始有省略的感覺了吧! 
但是,若是有東西必須得在 init block 裡執行,init block 還是不能被省略的!

那,讓我們繼續簡化程式碼吧!

在這個 class 裡,帶進來一個參數,又宣告一個變數讓它等於帶進來的參數。

呃,這段話看起來既冗長又複雜,Kotlin 最不喜歡複雜的東西了!

於是就產生了 Kotlin 極簡的寫法,將宣告參數寫在建構子裡,到時候需要實例化該類別時,傳進來的參數即等於該變數,來看看怎麼寫吧!

//建構子
class Person (val name: String) {

}

class 的介紹其實不只這樣,這邊是介紹 class 的寫法與其建構子,其後還有 class 繼承需要介紹,待日後再來講解吧!


上一篇
[Day 2] Kotlin 語法 - 變數
下一篇
[Day 4] Kotlin 語法 - 條件判斷 (1)
系列文
Android心得筆記×Kotlin語法初探 不是新手村 是嬰兒村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言