Swift入門-Day8:物件導向

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

類別(Class)

在Swift中,類別是一種用來定義屬性和方法的模板,可以創建和管理對象。

建構子(Constructor)

建構子(初始化方法)用來初始化類別的實例。在Swift中,建構子使用init關鍵字。

class Person {
var name: String

init(name: String) {
self.name = name
}
}

let person = Person(name: "Alice")
print(person.name) // Alice

公開(Public)

使用public關鍵字可以使屬性和方法在模組外部可見和可訪問。

public class Person {
public var name: String

public init(name: String) {
self.name = name
}

public func greet() {
print("Hello, \\\\(name)!")
}
}

let person = Person(name: "Bob")
person.greet() // Hello, Bob!

私有(Private)

使用private關鍵字可以將屬性和方法限制在類別內部。

class Person {
private var name: String

init(name: String) {
self.name = name
}

func greet() {
print("Hello, \\\\(name)!")
}
}

let person = Person(name: "Charlie")
// print(person.name) // Error: 'name' is inaccessible due to 'private' protection level
person.greet() // Hello, Charlie!

受保護(Protected)

Swift中沒有受保護(protected)關鍵字,通常使用fileprivateinternal來實現類似功能。

fileprivate:在同一文件內可見。

class Person {
fileprivate var name: String

init(name: String) {
self.name = name
}

func greet() {
print("Hello, \\\\(name)!")
}
}

let person = Person(name: "David")
person.greet() // Hello, David!

繼承(Inheritance)

繼承允許一個類別繼承另一個類別的屬性和方法。

class Animal {
var name: String

init(name: String) {
self.name = name
}

func makeSound() {
print("Some generic sound")
}
}

class Dog: Animal {
override func makeSound() {
print("Bark")
}
}

let dog = Dog(name: "Buddy")
dog.makeSound() // Bark

多型(Polymorphism)

多型允許子類別以父類別的型別出現,並在運行時調用適當的子類別方法。

class Animal {
func makeSound() {
print("Some generic sound")
}
}

class Cat: Animal {
override func makeSound() {
print("Meow")
}
}

let animals: [Animal] = [Dog(name: "Buddy"), Cat()]
for animal in animals {
animal.makeSound()
}
// Output:
// Bark
// Meow

封裝(Encapsulation)

封裝是將數據和方法組合在一起,並隱藏內部實現的技術。使用privatefileprivate可以實現封裝。

class Person {
private var name: String

init(name: String) {
self.name = name
}

func getName() -> String {
return name
}
}

let person = Person(name: "Eve")
print(person.getName()) // Eve

介面(Interface)

Swift使用協議(protocol)來實現介面。協議定義了一組方法和屬性,類別可以遵循這些協議並實現其中的要求。

protocol Greetable {
func greet()
}

class Greeter: Greetable {
func greet() {
print("Hello!")
}
}

let greeter = Greeter()
greeter.greet() // Hello!

抽象類別(Abstract Class)

Swift不支持抽象類別,但可以使用協議和擴展來實現類似功能。

protocol Animal {
var name: String { get set }
func makeSound()
}

class Dog: Animal {
var name: String

init(name: String) {
self.name = name
}

func makeSound() {
print("Bark")
}
}

let dog = Dog(name: "Buddy")
dog.makeSound() // Bark

靜態類別(Static Class)

Swift不支持靜態類別,但可以使用結構體(struct)和靜態屬性來模擬。

struct Math {
static func square(_ number: Int) -> Int {
return number * number
}
}

print(Math.square(4)) // 16

列舉(Enumerations)

列舉是一種定義相關值組合的型別。

enum Direction {
case north
case south
case east
case west
}

let direction = Direction.north
switch direction {
case .north:
print("Going north")
case .south:
print("Going south")
case .east:
print("Going east")
case .west:
print("Going west")
}
// Going north

委派(Delegates)

委派是一種設計模式,允許類別將某些任務委託給其他類別來完成。

protocol PrinterDelegate {
func printMessage()
}

class Printer {
var delegate: PrinterDelegate?

func print() {
delegate?.printMessage()
}
}

class ConsolePrinter: PrinterDelegate {
func printMessage() {
print("Printing to console")
}
}

let printer = Printer()
let consolePrinter = ConsolePrinter()
printer.delegate = consolePrinter
printer.print() // Printing to console

Lambda 表達式

Swift中的閉包類似於其他語言中的Lambda表達式。

let add = { (a: Int, b: Int) -> Int in
return a + b
}

print(add(2, 3)) // 5

泛型(Generics)

泛型允許你編寫靈活且可重用的代碼。

func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}

var x = 5
var y = 10
swapValues(&x, &y)
print("x: \\\\(x), y: \\\\(y)") // x: 10, y: 5

反射(Reflection)

Swift的反射允許你檢查和修改運行時的類型和對象。

import Foundation

class Person: NSObject {
@objc var name: String
@objc var age: Int

init(name: String, age: Int) {
self.name = name
self.age = age
}
}

let person = Person(name: "Alice", age: 30)
let mirror = Mirror(reflecting: person)

for child in mirror.children {
print("\\\\(child.label!): \\\\(child.value)")
}
// Output:
// name: Alice
// age: 30

這些是Swift中的一些面向對象和高級特性。理解並掌握這些特性將幫助你在Swift編程中編寫更強大和靈活的代碼。

留言
avatar-img
留言分享你的想法!
avatar-img
Michael楊
17會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
Michael楊的其他內容
2024/06/25
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
2024/06/25
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
2024/06/24
本章節為Swift程式語言的異常處理介紹,說明了為何需要進行異常處理以及如何進行異常處理。提供了使用do、try、catch和throw關鍵字進行異常處理的基本語法並展示了其在實際程式中的應用。同時也說明了Swift中的一些常見異常類型,並且教導了如何主動觸發異常訊息和定義自己的異常類型。
Thumbnail
2024/06/24
本章節為Swift程式語言的異常處理介紹,說明了為何需要進行異常處理以及如何進行異常處理。提供了使用do、try、catch和throw關鍵字進行異常處理的基本語法並展示了其在實際程式中的應用。同時也說明了Swift中的一些常見異常類型,並且教導了如何主動觸發異常訊息和定義自己的異常類型。
Thumbnail
2024/06/23
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
2024/06/23
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
本章節旨在為讀者提供Swift程式語言的基礎知識,包括其基本語法、註解方法和變數使用方式,並通過具體的程式碼示例來說明這些概念。這將幫助讀者理解Swift的基本結構,並學會如何在Swift中定義變數並使用註解。
Thumbnail
本章節旨在為讀者提供Swift程式語言的基礎知識,包括其基本語法、註解方法和變數使用方式,並通過具體的程式碼示例來說明這些概念。這將幫助讀者理解Swift的基本結構,並學會如何在Swift中定義變數並使用註解。
Thumbnail
這份文件的目的是介紹Swift語言,包括它的特性、應用範疇,以及誰在使用它。它也提供了一些學習Swift的資源和工具,以及一些常見的Swift庫和框架。
Thumbnail
這份文件的目的是介紹Swift語言,包括它的特性、應用範疇,以及誰在使用它。它也提供了一些學習Swift的資源和工具,以及一些常見的Swift庫和框架。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News