抽象,封装,多态等,
时间: 2024-08-15 18:07:27 浏览: 39
### 抽象
抽象是指通过概括来简化复杂的事物的过程,尤其在计算机科学领域,抽象主要体现在类的设计上。抽象可以分为三个基本概念:
#### 1. **接口(API)**
- 接口定义了一组操作的标准行为,不涉及实现细节。
示例:
```python
class Animal:
def eat(self):
pass
class Dog(Animal):
def eat(self):
print("Dog eats meat")
class Cat(Animal):
def eat(self):
print("Cat eats fish")
```
#### 2. **继承**
- 继承允许创建新类时复用现有类的属性和方法,减少了重复代码并提高了可扩展性。
示例:
```python
class Mammal:
def breathe(self):
print("Breathing as a mammal")
class Dog(Mammal):
def bark(self):
print("Woof!")
```
#### 3. **封装**
- 封装意味着将数据与对这些数据的操作捆绑在一起,隐藏内部状态,只暴露公共接口。
示例:
```python
class BankAccount:
def __init__(self, balance=0):
self.__balance = balance
def deposit(self, amount):
self.__balance += amount
def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else:
print("Insufficient funds.")
def get_balance(self):
return self.__balance
account = BankAccount()
account.deposit(100)
print(account.get_balance())
```
### 封装
封装是面向对象编程的一个核心特性,它通过将数据和操作数据的方法结合在一个类中,以保护数据的完整性和安全性。在上面的`BankAccount`示例中,`__balance`字段(也称为私有成员)和相关的`deposit()`、`withdraw()`和`get_balance()`方法构成了一个封闭的单元,外部代码只能通过公开的方法与内部状态交互。
### 多态
多态允许不同类型的对象响应相同的调用,这是通过继承和方法重写实现的。
#### 示例:
```python
class Vehicle:
def drive(self):
raise NotImplementedError('Subclasses must implement this method')
class Car(Vehicle):
def drive(self):
print("Driving a car")
class Bicycle(Vehicle):
def drive(self):
print("Pedaling the bicycle")
vehicles = [Car(), Bicycle()]
for vehicle in vehicles:
vehicle.drive()
```
在这个例子中,`Vehicle`类有一个未实现的方法`drive()`,而子类`Car`和`Bicycle`分别实现了这个方法的不同版本。尽管`vehicle`变量指向的是`Vehicle`的对象实例,但是其实际的行为取决于该实例所属的具体类。这就是多态性的体现——一种方法可以有不同的实现方式,具体取决于运行时的实际对象类型。