Day 5:面向对象编程(OOP)基础
一、面向对象编程概述
面向对象编程(OOP)是一种编程范式,使用“对象”来表示数据和数据上可用的操作。OOP的核心概念包括类、对象、继承、多态和封装。
概念 | 描述 |
---|---|
类 | 一种蓝图,定义了对象的属性和方法。 |
对象 | 类的实例,包含具体的数据和方法。 |
继承 | 一个类可以继承另一个类的属性和方法,从而实现代码重用。 |
多态 | 同一操作作用于不同对象时,表现出不同的行为。 |
封装 | 把数据和操作数据的方法绑定在一起,限制外部对内部状态的访问。 |
二、创建类和对象
在Python中,使用关键字class
定义类。类可以有属性(变量)和方法(函数)。
示例代码:
class Dog:
# 初始化方法
def __init__(self, name, age):
self.name = name # 属性
self.age = age # 属性
# 方法:描述狗的叫声
def bark(self):
return f"{self.name} says Woof!"
# 创建Dog类的对象
my_dog = Dog("Buddy", 3)
# 调用对象的方法
print(my_dog.bark()) # 输出: Buddy says Woof!
三、类的属性和方法
- 属性:用于存储对象的状态信息。
- 方法:用于定义对象的行为,有助于操作对象的属性。
表格:类的属性与方法示例
属性 | 描述 |
---|---|
name | 狗的名字 |
age | 狗的年龄 |
方法 | 描述 |
---|---|
bark() | 返回狗叫的声音 |
get_info() | 返回狗的基本信息 |
示例代码:
class Cat:
def __init__(self, name, age):
self.name = name
self.age = age
def meow(self):
return f"{self.name} says Meow!"
def get_info(self):
return f"Name: {self.name}, Age: {self.age}"
# 创建Cat类的对象
my_cat = Cat("Whiskers", 2)
# 调用对象的方法
print(my_cat.meow()) # 输出: Whiskers says Meow!
print(my_cat.get_info()) # 输出: Name: Whiskers, Age: 2
四、继承
继承允许我们创建一个类(子类)来继承另一个类(父类)的属性和方法。
示例代码:
class Animal:
def __init__(self, species):
self.species = species
def speak(self):
return "Some sound"
# Dog类继承自Animal类
class Dog(Animal):
def __init__(self, name, age):
super().__init__("Dog")
self.name = name
self.age = age
def speak(self):
return f"{self.name} says Woof!"
# 创建Dog对象
my_dog = Dog("Buddy", 3)
print(my_dog.speak()) # 输出: Buddy says Woof!
流程图:继承关系
+-------------+
| Animal |
+-------------+
^
|
+-------------+
| Dog |
+-------------+
五、多态
多态使得不同类的对象可以使用同样的方法名而实现不同的行为。
示例代码:
class Cat(Animal):
def __init__(self, name, age):
super().__init__("Cat")
self.name = name
self.age = age
def speak(self):
return f"{self.name} says Meow!"
# 创建Cat对象
my_cat = Cat("Whiskers", 2)
# 使用相同的方法名但不同的对象
for animal in (my_dog, my_cat):
print(animal.speak()) # 输出: Buddy says Woof! 和 Whiskers says Meow!
六、封装
封装是将数据(属性)和操作数据的方法绑定到一个对象上,并隐藏内部状态,以提高安全性和可维护性。
示例代码:
class BankAccount:
def __init__(self, balance=0):
self.__balance = balance # 使用双下划线来保护属性
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
def get_balance(self):
return self.__balance
# 创建BankAccount对象
account = BankAccount()
account.deposit(100)
print(account.get_balance()) # 输出: 100
account.withdraw(50)
print(account.get_balance()) # 输出: 50
七、项目作业
为了巩固所学知识,请完成以下项目:
-
项目描述:
创建一个简单的图书管理系统,包含如下功能:- 添加图书(类:
Book
) - 借书(类:
Library
) - 还书
- 查看所有图书信息
- 添加图书(类:
-
要求:
- 使用面向对象编程的基本特性(类、继承、多态、封装)。
- 实现至少三个类:
Book
,Library
,Member
。 - 每个类应有合适的属性和方法。
-
示例思路:
Book
类有属性如书名、作者、是否被借出。Library
类可以管理多个Book
对象。Member
类有属性如姓名和借阅的书籍列表。
结语
通过本章学习,您应当掌握了基本的面向对象编程思想、类和对象的使用、继承、多态和封装的核心概念及其实现。在实际开发中,OOP能够帮助设计更清晰、可维护和可扩展的代码结构。
怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!