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
15會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Michael楊 的其他內容
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
此文件的目的是教授 Kotlin 程式語言的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子以及運算子的優先等級。這將有助於讀者更好地理解和撰寫 Kotlin 程式碼。
本章節的目的是介紹 Kotlin 的各種資料型別。包括內建型別如基本數值型別、字串型別和布林型別等,以及如何進行型別轉換。此外,也介紹了如何定義自訂型別(類)和元組型別,以及 Kotlin 提供的集合型別,例如列表(List)、集合(Set)和映射(Map)以及陣列(Array)。
本章節提供了設置Kotlin開發環境的多種選擇,包括使用IntelliJ IDEA、Android Studio、命令行工具、Visual Studio Code,以及在線編輯器。每種方法都有詳細的步驟說明,旨在幫助讀者根據自己的需求選擇最適合的設置方式,並順利開始Kotlin開發。
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
此文件的目的是教授 Kotlin 程式語言的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子以及運算子的優先等級。這將有助於讀者更好地理解和撰寫 Kotlin 程式碼。
本章節的目的是介紹 Kotlin 的各種資料型別。包括內建型別如基本數值型別、字串型別和布林型別等,以及如何進行型別轉換。此外,也介紹了如何定義自訂型別(類)和元組型別,以及 Kotlin 提供的集合型別,例如列表(List)、集合(Set)和映射(Map)以及陣列(Array)。
本章節提供了設置Kotlin開發環境的多種選擇,包括使用IntelliJ IDEA、Android Studio、命令行工具、Visual Studio Code,以及在線編輯器。每種方法都有詳細的步驟說明,旨在幫助讀者根據自己的需求選擇最適合的設置方式,並順利開始Kotlin開發。
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
※ class類別 什麼是class? class是創造consturctor function時的語法糖,本質上與使用function創造物件(object)的行為沒有不同。 class的作用: 用來定義、描述要創造的物件(object)具有那些屬性、行為的一個表達式。就像是「車子的設計圖
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
類別 (class) 是在 ES6 中引入,用來作為建立新物件的模板。它可以將程式碼封裝起來。
讓我在這篇文章總結一下前面對物件導向設計的討論,我們討論了物件導向的四個特性:繼承、抽象、多型、封裝,分析了它們的問題,並跟函數式編程的思維做比較。我們引入了與之相對應的特性:泛型、特性系統、模組化,有些特性雖然跟那四個特性很像,但在一些細微的地方有不同的詮釋,使得整體思考方式很不一樣。 「繼
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本文讓我們來淺談一下類別是什麼? 若想看詳細一點的python官方教學可點此連結 Python 的類別(Class)是一種面向物件導向程式設計的概念,讓你能夠創建具有屬性和方法的物件。類別是對現實世界中事物的抽象,它包含數據和操作這些數據的方法。它非常的抽象,想像一個類別就像是一個蛋糕模具,
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
※ class類別 什麼是class? class是創造consturctor function時的語法糖,本質上與使用function創造物件(object)的行為沒有不同。 class的作用: 用來定義、描述要創造的物件(object)具有那些屬性、行為的一個表達式。就像是「車子的設計圖
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
類別 (class) 是在 ES6 中引入,用來作為建立新物件的模板。它可以將程式碼封裝起來。
讓我在這篇文章總結一下前面對物件導向設計的討論,我們討論了物件導向的四個特性:繼承、抽象、多型、封裝,分析了它們的問題,並跟函數式編程的思維做比較。我們引入了與之相對應的特性:泛型、特性系統、模組化,有些特性雖然跟那四個特性很像,但在一些細微的地方有不同的詮釋,使得整體思考方式很不一樣。 「繼
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本文讓我們來淺談一下類別是什麼? 若想看詳細一點的python官方教學可點此連結 Python 的類別(Class)是一種面向物件導向程式設計的概念,讓你能夠創建具有屬性和方法的物件。類別是對現實世界中事物的抽象,它包含數據和操作這些數據的方法。它非常的抽象,想像一個類別就像是一個蛋糕模具,