在 Kotlin 中,類和物件是兩個重要的概念。類是用來定義數據結構和行為的模板。物件是類的實例。
類的定義
類的定義使用 class 關鍵字,語法如下:
class 類名 {
// 類體
}
類名:類的名稱。類體:類的代碼塊。
類體
類體可以包含以下內容:
- 屬性:用來存儲數據。
- 方法:用來執行操作。
- 初始化函數:用來初始化類的屬性。
屬性的定義
屬性的定義使用 val 或 var 關鍵字,語法如下:
class 類名 {
val 屬性名: 類型 = 初始值
var 屬性名: 類型 = 初始值
}
val:屬性是只讀的。var:屬性是可讀可寫的。屬性名:屬性的名稱。類型:屬性的類型。初始值:屬性的初始值。
方法的定義
方法的定義使用 fun 關鍵字,語法如下:
class 類名 {
fun 方法名(參數列表): 返回類型 {
// 方法體
return 輸出值
}
}
方法名:方法的名稱。參數列表:方法的輸入參數。返回類型:方法的返回類型。方法體:方法的代碼塊。輸出值:方法的返回值。
初始化函數的定義
初始化函數的定義使用 init 關鍵字,語法如下:
class 類名 {
init {
// 初始化函數體
}
}
初始化函數會在物件被創建時執行。
物件的創建
物件的創建使用 new 運算符,語法如下:
val 物件名 = new 類名()
物件名:物件的名稱。類名:物件的類型。
物件的引用
物件的引用可以使用 :: 運算符,語法如下:
val 物件名 = 類名::class.java
物件名:物件的名稱。類名:物件的類型。
物件的訪問
物件的屬性和方法可以使用 . 運算符來訪問,語法如下:
val 物件名.屬性名
val 物件名.方法名(參數列表)
物件名:物件的名稱。屬性名:屬性的名稱。方法名:方法的名稱。參數列表:方法的輸入參數。
示例
class Person(val name: String, val age: Int) {
fun sayHello() {
println("Hello, my name is $name. I am $age years old.")
}
}
fun main(args: Array<String>) {
val person = Person("Bard", 10)
println(person.name)
println(person.age)
person.sayHello()
}
上述示例中,Person 類定義了兩個屬性:name 和 age。sayHello() 方法用來打印物件的名稱和年齡。
在 main() 函數中,我們創建了一個 Person 物件 person。然後,我們使用 println() 函數來訪問 person 的屬性 name 和 `age
類的繼承
在 Kotlin 中,類可以繼承其他類。繼承允許子類繼承父類的屬性和方法。
繼承的定義
繼承的定義使用 open 關鍵字,語法如下:
open class 父類名 {
// 父類的屬性和方法
}
class 子類名(
// 子類的屬性和方法
) : 父類名() {
// 子類的覆蓋方法
}
父類名:父類的名稱。子類名:子類的名稱。
覆蓋方法
子類可以覆蓋父類的方法。覆蓋方法的名稱和參數列表必須與父類的方法相同。
示例
open class Animal {
open fun sayHello() {
println("Hello, I am an animal.")
}
}
class Dog : Animal() {
override fun sayHello() {
println("Hello, I am a dog.")
}
}
fun main(args: Array<String>) {
val animal = Animal()
animal.sayHello()
val dog = Dog()
dog.sayHello()
}
上述示例中,Animal 類定義了一個 sayHello() 方法。Dog 類繼承了 Animal 類,並覆蓋了 sayHello() 方法。
在 main() 函數中,我們創建了一個 Animal 物件 animal 和一個 Dog 物件 dog。然後,我們調用 sayHello() 方法來打印物件的名稱。
抽象類
抽象類是不能被實例化的類。抽象類可以用來定義通用的接口。
抽象類的定義
抽象類的定義使用 abstract 關鍵字,語法如下:
abstract class 抽象類名 {
// 抽象類的屬性和方法
}
抽象類名:抽象類的名稱。
抽象方法
抽象類可以定義抽象方法。抽象方法沒有方法體。
示例
abstract class Animal {
abstract fun sayHello()
}
class Dog : Animal() {
override fun sayHello() {
println("Hello, I am a dog.")
}
}
fun main(args: Array<String>) {
val dog = Dog()
dog.sayHello()
}
上述示例中,Animal 類定義了一個抽象方法 sayHello()。Dog 類繼承了 Animal 類,並覆蓋了 sayHello() 方法。
伴生對象
伴生對象是與類關聯的一個單例對象。伴生對象可以包含屬性和方法,也可以用來實現單例模式。
伴生對象的定義
伴生對象的定義使用 companion object 關鍵字,語法如下:
class 類名 {
companion object {
// 伴生對象的屬性和方法
}
}
類名:類的名稱。
示例
class Person {
companion object {
const val NAME = "Bard"
fun sayHello() {
println("Hello, my name is $NAME.")
}
}
}
fun main(args: Array<String>) {
Person.sayHello()
}
上述示例中,Person 類定義了一個伴生對象。伴生對象包含一個常量 NAME 和一個方法 sayHello()。
總結
類和物件是 Kotlin 語言中非常重要的概念。掌握類和物件的使用可以幫助您編寫更加靈活和高效的程序。
深入淺出學會編寫程式: https://pse.is/3ksear
Kotlin 實戰手冊: https://bookstw.link/5g3bsy
程式新手學習發問區,問都給問!!: https://www.facebook.com/groups/914880435669061
紫楓FB專頁: https://www.facebook.com/tbpfs2/
紫楓blog: https://tbpfs1.blogspot.com/
斗內專線: https://pse.is/KUYMP
0 意見:
張貼留言