OOP笔记

OOP (Object-Oriented Programming) 是一种软件设计方法,它将程序中的代码组织成独立的对象(Objects),并且这些对象可以互相交互和传递信息。OOP 使得程序更易于理解、扩展和维护。

类和对象

在 OOP 中,我们使用类来定义对象的属性和行为。类是一种用户自定义的数据类型,用于封装数据和函数。而对象则是类的实例化。通过创建不同的对象,我们可以实现对同一个类的多个实例进行操作。

 

python复制代码

class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): print(f"{self.name} is barking!") my_dog = Dog("Fido", 3) my_dog.bark() # 输出: Fido is barking!

上述代码定义了一个 Dog 类,并创建了一个名为 my_dog 的对象。my_dog 对象有两个属性:nameage,以及一个 bark() 方法,当调用 my_dog.bark() 方法时,会输出 Fido is barking!

封装、继承和多态

封装、继承和多态是 OOP 的三大基本特征。

封装

封装指的是隐藏对象的内部实现细节,只暴露必要的接口。这可以避免外部对象对内部对象的直接修改,保证了程序的安全性和可维护性。

 

python复制代码

class Person: def __init__(self, name, age): self.__name = name self.__age = age def get_name(self): return self.__name def get_age(self): return self.__age def set_age(self, age): if age < 0 or age > 120: raise ValueError("Invalid age") self.__age = age person = Person("Alice", 25) print(person.get_name()) # 输出:Alice print(person.get_age()) # 输出:25 person.set_age(30) print(person.get_age()) # 输出:30

上述代码中,Person 类的 nameage 属性被封装为私有属性(用双下划线开头),外部无法直接访问或修改这些属性。通过定义 get_name()get_age()set_age() 方法来对外暴露必要的接口。

继承

继承是 OOP 中一种重要的概念,它指的是基于已存在的类创建新的类。新的类继承了原来类的属性和方法,同时也可以添加自己的属性和方法。这使得代码复用更加容易,并且可以实现更好的模块化设计。

 

python复制代码

class Animal: def __init__(self, name): self.name = name def eat(self): print(f"{self.name} is eating!") class Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breed def bark(self): print(f"{self.name} is barking!") my_dog = Dog("Fido", "Golden Retriever") my_dog.eat() # 输出: Fido is eating! my_dog.bark() # 输出: Fido is barking!

上述代码中,Dog 类继承自 Animal 类,并添加了自己的属性和方法。通过调用 super().__init__(name) 方法,可以在子类中调用父类的构造函数。

多态

多态指的是同一种方法可以被不同类型的对象进行调用,并且返回不同的结果。这使得代码更加灵活,可以根据需要动态地选择执行哪个方法。

 

python复制代码

class Shape: def draw(self): pass class Circle(Shape): def draw(self): print("Drawing a circle") class Square(Shape): def draw(self): print("Drawing a square") shapes = [Circle(), Square()] for shape in shapes: shape.draw()

上述代码中,Shape 类定义了一个抽象的 draw() 方法。CircleSquare 类继承自 Shape 类,并实现了自己的 draw() 方法。通过将 CircleSquare 的对象放在同一个列表中,并遍历这个列表,可以调用它们各自的 draw() 方法。

总结

OOP 是一种强大、灵活和易于理解的软件设计方法。通过使用类、对象、封装、继承和多态等概念,可以实现模块化、可重用和易于维护的程序。在编写 OOP 代码时,需要注意正确的命名、封装、继承和多态的使用,以及良好的文档和注释等编码规范。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值