物件導向程式設計基礎
面向物件程式設計(Object-Oriented Programming,簡稱 OOP)是一種程式設計範式,強調將程式組織成由物件構成的模組。每個物件都包含了資料和操作資料的方法。OOP 的核心理念是透過模擬現實世界中的物件來解決問題,並且讓程式碼更具組織性、可讀性和可維護性。
OOP 有四大核心概念:封裝(Encapsulation)、繼承(Inheritance)、多型(Polymorphism)和抽象(Abstraction)。
以下是 OOP 的基礎概念——類和物件的簡單介紹。
定義類(Class)
在Python中可以使用class
關鍵字定義類,然後在類中透過函式來定義方法,這樣就可以將物件的動態特徵描述出來。
例如,"車子"可以是一個類,其中包含屬性如顏色、品牌、速度等,還包含方法如加速、煞車等行為。
定義物件(Object)
物件是根據類創建的具體實例,是類的具體化。物件擁有類定義的屬性和方法,是實際存在的個體。例如,"一台紅色的 Toyota 車子"就是 "車子" 類的物件。
類與物件的封裝(Encapsulation)練習
封裝指的是將資料(屬性)和行為(方法)組合到一個單獨的單位中,並讓它們能夠相互操作。此處 Car
類中,color
和 brand
這兩個屬性以及 start
方法都被封裝在一起,使得每個 Car
物件都包含自己的資料與行為。
'''
Version: Day08
Author: SQA yang
面向物件程式設計
(Object-Oriented Programming,簡稱 OOP)
'''
# 定義一個Car的類class
class Car:
def __init__(self, color, brand):
self.color = color
self.brand = brand
def start(self):
print(f"{self.brand} car is starting.")
my_car = Car("Red", "Toyota") # 創建一個Car類的物件
# 使用物件屬性和方法
print(my_car.color) # 輸出: Red
print(my_car.brand) # 輸出: Toyota
my_car.start() # 輸出: Toyota car is starting.

python物件導向設計:封裝案例
類與物件的封裝、抽象、繼承、多型練習
'''
Version: Day08
Author: SQA yang
面向物件程式設計(Object-Oriented Programming,簡稱 OOP)
'''
from abc import ABC, abstractmethod
# 抽象基類 Vehicle,代表所有車輛的抽象類
class Vehicle(ABC):
def __init__(self, color, brand):
self.color = color
self.brand = brand
@abstractmethod
def start(self):
"""抽象方法,必須由子類別實作具體功能"""
pass
# Car 類,繼承自 Vehicle 類,並實現 start 方法
class Car(Vehicle):
def start(self):
print(f"{self.brand} car is starting with a soft engine sound.")
# Truck 類,繼承自 Vehicle 類,並實現自己的 start 方法
class Truck(Vehicle):
def start(self):
print(f"{self.brand} truck is starting with a heavy engine sound.")
# 創建不同類型的車輛物件
my_car = Car("Red", "Toyota")
my_truck = Truck("Blue", "Ford")
# 使用多型,呼叫 start 方法
my_car.start() # 輸出: Toyota car is starting with a soft engine sound.
my_truck.start() # 輸出: Ford truck is starting with a heavy engine sound.

封裝、抽象、繼承、多型練習
- 抽象(Abstraction):
- Vehicle 類是一個抽象基類,使用了 ABC 模組和 @abstractmethod 裝飾器來定義 start 方法作為抽象方法。抽象基類本身不能實例化,必須被其他子類繼承並實作其方法。
- 繼承(Inheritance):
- Car 和 Truck 類繼承了 Vehicle 類,因此它們會擁有 Vehicle 的屬性(color 和 brand)。這些子類也必須實現 Vehicle 類中的抽象方法 start,以符合抽象基類的要求。
- 多型(Polymorphism):
- 雖然 Car 和 Truck 都繼承了 Vehicle 類並擁有相同的 start 方法名,但它們的 start 方法執行不同的操作。Car 的 start 方法會顯示 "soft engine sound",而 Truck 的 start 方法則顯示 "heavy engine sound"。這就是多型,因為相同的方法(start)在不同的類中有不同的行為。
- 封裝(Encapsulation):
- 每個物件(例如 my_car 和 my_truck)封裝了自己的屬性和方法,且不影響其他物件的屬性。封裝讓每個物件有自己的 color 和 brand,並能使用 start 方法。
以上為Python100天從新手到大師的Day08學習筆記。