大學期間上系統分析時,教授在台上說:
「今天的內容呢,是 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 介紹就先到這邊,明天應該是第二週的回顧跟補充一點點東西。
下一篇見寫寫打家打家擺掰。