Kotlin入門-Day8:物件導向

更新於 發佈於 閱讀時間約 8 分鐘

類別(Class)

Kotlin 中的類別(class)是面向對象編程的基本單位,它封裝了數據和行為。以下是有關 Kotlin 類別的各種概念及其示例。

建構子(Constructor)

Kotlin 中有主建構子和次建構子。

// 主建構子
class Person(val name: String, var age: Int)

// 次建構子
class Person {
var name: String
var age: Int

constructor(name: String, age: Int) {
this.name = name
this.age = age
}
}

公開(Public)

public 是預設的訪問修飾符,表示所有地方都能訪問。

class Person {
public var name: String = "John"
}

私有(Private)

private 表示只有在類別內部才能訪問。

class Person {
private var name: String = "John"
}

保護(Protected)

protected 表示在類別及其子類中可以訪問。

open class Person {
protected var name: String = "John"
}

class Student : Person() {
fun printName() {
println(name) // 可以訪問
}
}

內部(Internal)

internal 表示在同一模組中可以訪問。

internal class Person {
var name: String = "John"
}

繼承(Inheritance)

Kotlin 支持類別繼承,但類別默認是 final 的,需要用 open 修飾符標記為可繼承。

open class Person {
open fun greet() {
println("Hello!")
}
}

class Student : Person() {
override fun greet() {
println("Hi, I am a student.")
}
}

多型(Polymorphism)

多型允許使用不同的類別類型來處理相同的基本行為。

open class Animal {
open fun sound() {
println("Animal sound")
}
}

class Dog : Animal() {
override fun sound() {
println("Bark")
}
}

class Cat : Animal() {
override fun sound() {
println("Meow")
}
}

fun makeSound(animal: Animal) {
animal.sound()
}

val dog = Dog()
val cat = Cat()

makeSound(dog) // 輸出: Bark
makeSound(cat) // 輸出: Meow

封裝(Encapsulation)

封裝通過訪問修飾符來控制對類別內部數據和方法的訪問。

class Person {
private var name: String = "John"

fun getName(): String {
return name
}
}

介面(Interface)

介面定義一組行為,其他類別可以實現這些行為。

interface Drivable {
fun drive()
}

class Car : Drivable {
override fun drive() {
println("Car is driving")
}
}

val car = Car()
car.drive() // 輸出: Car is driving

抽象類別(Abstract Class)

抽象類別不能實例化,可以包含抽象方法和具體方法。

abstract class Animal {
abstract fun sound()

fun sleep() {
println("Sleeping")
}
}

class Dog : Animal() {
override fun sound() {
println("Bark")
}
}

val dog = Dog()
dog.sound() // 輸出: Bark
dog.sleep() // 輸出: Sleeping

靜態類別(Static Class)

Kotlin 中沒有 static 關鍵字,可以使用 companion object 來模擬靜態行為。

class Utility {
companion object {
fun printMessage() {
println("This is a static message")
}
}
}

Utility.printMessage() // 輸出: This is a static message

列舉(Enumerations)

列舉用於表示一組相關的常量。

enum class Direction {
NORTH, SOUTH, EAST, WEST
}

val direction = Direction.NORTH
println(direction) // 輸出: NORTH

委派(Delegates)

委派模式允許一個對象將其操作委派給另一個對象。

interface Base {
fun print()
}

class BaseImpl(val x: Int) : Base {
override fun print() {
println(x)
}
}

class Derived(b: Base) : Base by b

val b = BaseImpl(10)
val derived = Derived(b)
derived.print() // 輸出: 10

Lambda 表達式

Lambda 表達式是一種簡潔的函數表示方式。

val sum: (Int, Int) -> Int = { x, y -> x + y }
println(sum(3, 4)) // 輸出: 7

泛型(Generics)

泛型允許類別和函數操作任意類型。

class Box<T>(val value: T)

val intBox = Box(1)
val stringBox = Box("Hello")
println(intBox.value) // 輸出: 1
println(stringBox.value) // 輸出: Hello

反射(Reflection)

反射允許在運行時檢查和操作對象。

import kotlin.reflect.full.*

class MyClass(val name: String, val age: Int)

fun main() {
val myClass = MyClass::class
println(myClass.simpleName) // 輸出: MyClass
myClass.memberProperties.forEach { println(it.name) } // 輸出: name, age
}

留言
avatar-img
留言分享你的想法!
avatar-img
Michael楊
18會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
Michael楊的其他內容
2024/06/29
本章節旨在教導讀者如何在 Kotlin 中引入套件。將會涵蓋如何引用第三方套件,如何引用自定義模組,以及如何創建和引用自定義套件。此外,還會列出一些常用的套件,以供讀者參考。
Thumbnail
2024/06/29
本章節旨在教導讀者如何在 Kotlin 中引入套件。將會涵蓋如何引用第三方套件,如何引用自定義模組,以及如何創建和引用自定義套件。此外,還會列出一些常用的套件,以供讀者參考。
Thumbnail
2024/06/29
這篇文章主要講解Kotlin的例外處理。內容包括例外處理的目的、`try-catch` 和 `finally` 的用法、常見的異常類型,以及如何定義和觸發自定義的異常訊息。
Thumbnail
2024/06/29
這篇文章主要講解Kotlin的例外處理。內容包括例外處理的目的、`try-catch` 和 `finally` 的用法、常見的異常類型,以及如何定義和觸發自定義的異常訊息。
Thumbnail
2024/06/29
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
Thumbnail
2024/06/29
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
Thumbnail
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
Thumbnail
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
Thumbnail
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
Thumbnail
這個章節的目的是為了介紹Kotlin這種程式語言,包含它的特性、應用領域、使用者,以及相關的學習資源和工具。透過這篇文章,讀者可以了解到Kotlin的基礎知識,並開始學習和使用它。
Thumbnail
這個章節的目的是為了介紹Kotlin這種程式語言,包含它的特性、應用領域、使用者,以及相關的學習資源和工具。透過這篇文章,讀者可以了解到Kotlin的基礎知識,並開始學習和使用它。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News