在 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 意見:
張貼留言