iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0

大學期間上系統分析時,教授在台上說:

「今天的內容呢,是 Class 的 Class 。」

???????????

現場很冷,比我的心還冷。

這甚麼?到底甚麼 class?


Class、類別或是類(?

Class 在物件導向是很重要的概念,class 裡會有屬性( attribute )跟方法 ( method )去定義這個 class ,class 利用屬性來表達狀態,方法讓這個 class 可以做到甚麼事情。下面有個簡單的屬性範例:

屬性

class Car{
    val wheels = listOf<Wheel>()
}

汽車有輪子,電腦前有胖子,欸嘿就是我。

上面的範例就清楚的表達出,Wheels 是 Car 的屬性,這邊因為 val 前面沒有宣告,所以程式預設這個變數為 public ,意思就是其他程式可以直接從外部去拿到 Wheels 這個屬性,如果是想要設定為只有限定所在的 class 可以使用屬性,可以宣告成 private。

如果有另一個程式需要使用 Car 這個 Class 的實例,必須先調用建構函式,這樣你就可以使用這個 class 了。

val car = Car()   //建構(construct)一台車
val Wheels = Car.wheels  //從 Car class 獲取wheels 的值

如果希望自定義輪子,可以定義一個自定義構造函數,用來初始化 class 屬性:

class Car constructor(var wheels: List<Wheel>, var color: String)

我們也可以直接值加到建構式裡面:

class Car constructor(var wheels: List<Wheel> = listOf<Wheel>, var color: String = "Red")

甚至是連 constructor 都省略:

class Car(var wheels: List<Wheel> = listOf<Wheel>, var color: String = "Red")

方法

車子有了輪子,就可以開了嗎?

不會,他還不會。

所以我們將方法寫進去 class 裡面,讓他會。

class Car{
    val wheels = listOf<Wheel>()
    val color = "Red"

    fun go(){
        println("車在動欸")
    } 
    fun stop(){
        println("停了")
    }
}

跟上面使用屬性的做法一樣,先建一個實例出來,就可以去調用他的方法啦。

如果要在main 函式中調用這個 class 可以這麼寫:

fun main(){
    var car = Car()
    println(car.color)
    car.go()
    car.stop()
}

讚啦!

基本的 class 介紹就先到這邊,明天應該是第二週的回顧跟補充一點點東西。

下一篇見寫寫打家打家擺掰。


上一篇
DAY12 Kotlin基礎 函式
下一篇
DAY14 Kotlin基礎 Class 2!兼第二周回顧
系列文
糟了!是世界奇觀!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言