DAY13 Kotlin基础 Class

大学期间上系统分析时,教授在台上说:

「今天的内容呢,是 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 介绍就先到这边,明天应该是第二周的回顾跟补充一点点东西。

下一篇见写写打家打家摆掰。


<<:  Day14 Vue directives(v-for)上

>>:  Day 13 - Semigroup II & Monoid

Day28-全家桶

嗨,各位 昨天我们介绍过flac这好用的开源东东了 今天我要来介绍在linux上一个一样你(你)可以...

资料分析商业应用与策略管理 #笔记三

收集完大数据,管理与查找大数据的工具也同等重要,譬如我想知道我某天去某间咖啡厅点了什麽饮料,即使手机...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day12.事件处理

Vue 里面的事件处理,使用的方式会跟一般 JavaScript 的用法相近,下面跟着一起看吧~ 事...

<重要> 加密货币Token投资警示分享

发生的一个加密货币Token投资的小故事 最近区块链,加密货币一直是现在趋势潮流的新宠儿,无论朋友的...

git不再支援帐号密码验证

git在8/12停止了使用帐号密码作为资料上传的验证,改为较为安全的ssh,所以假如你使用帐号密码作...