在物件導向程式設計(Object-Oriented Programming,OOP)中,資料抽象化(Data Abstraction)、繼承(Inheritance)和動態繫結(Dynamic Binding)是三個重要的概念。以下是使用 Python 程式語言的例子來解釋這些概念:
1. 資料抽象化(Data Abstraction)
資料抽象化是指隱藏物件的內部實現,只暴露出操作物件的介面。這樣可以減少程式的複雜性,提高可維護性。
範例:
python
複製程式碼
class Car:
def __init__(self, make, model, year):
self.__make = make # 私有屬性
self.__model = model # 私有屬性
self.__year = year # 私有屬性
def get_details(self):
return f"{self.__year} {self.__make} {self.__model}"
def start_engine(self):
return "Engine started"
# 使用範例
my_car = Car("Toyota", "Camry", 2020)
print(my_car.get_details()) # 輸出: 2020 Toyota Camry
print(my_car.start_engine()) # 輸出: Engine started
在這個例子中,Car 類別將 __make、__model 和 __year 定義為私有屬性,這些屬性不能在類別外部直接存取,只能通過 get_details 和 start_engine 方法來操作,這就是資料抽象化。
2. 繼承(Inheritance)
繼承是指一個類別(子類別)可以繼承另一個類別(父類別)的屬性和方法,從而實現代碼的重用和擴展。
範例:
python
複製程式碼
class Vehicle:
def __init__(self, make, model):
self.make = make
self.model = model
def get_info(self):
return f"{self.make} {self.model}"
class Car(Vehicle): # Car 類別繼承自 Vehicle 類別
def __init__(self, make, model, year):
super().__init__(make, model)
self.year = year
def get_details(self):
return f"{self.year} {self.get_info()}"
# 使用範例
my_car = Car("Toyota", "Camry", 2020)
print(my_car.get_details()) # 輸出: 2020 Toyota Camry
在這個例子中,Car 類別繼承了 Vehicle 類別,並擴展了 __init__ 方法和 get_details 方法,這就是繼承的概念。