引言:
面向对象(Object-Oriented,简称OO)是一种编程思想,它基于“对象”的概念,将现实世界中的事物抽象为计算机程序中的对象。每个对象都拥有其独特的属性和方法,通过对象之间的交互来实现程序的功能。面向对象编程(Object-Oriented Programming,简称OOP)是这种编程思想的具体实现方式
面向对象编程(OOP)的三大特性是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。
- 封装:封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,只能通过该类提供的方法进行访问。封装的主要目的是保护对象内部的数据结构,防止外部程序随意访问和修改。封装通过将数据和操作数据的函数绑定在一起,形成了一个独立的实体,即对象。
- 继承:继承是指子类可以继承父类的所有非私有属性和方法,并且可以重写或添加新的属性和方法。继承的主要目的是为了实现代码的重用和扩展。通过继承,子类可以继承父类的功能和属性,同时还可以定义自己独有的功能和属性。这种机制大大提高了代码的可维护性和可扩展性。
- 多态:多态指的是同一个方法在运行时可以是不同的对象,即同一个接口可以有不同的实现方式。多态的主要目的是为了实现程序的灵活性和可扩展性。通过多态,我们可以在运行时根据需要动态地绑定对象和方法,从而实现不同的行为。
面向对象的优点主要是:
- 代码重用性:通过继承和组合,可以重用已有的代码,减少重复开发。
- 灵活性:对象可以动态地绑定方法和属性,支持运行时多态。
- 易于维护:封装和抽象使得代码结构清晰,易于理解和维护。
- 扩展性:通过继承和接口,可以方便地扩展系统的功能。
2.面向对象的组合用法:
2.1组合指的是:
在一个类中以另一个类的对象作为属性(在一个类中调用另一个类)
2.1.1可以在类内部调用另一个类
2.1.2在外部将一个类的对象赋值给这个类的对象的属性
3.面向对象的三大特性:
3.1继承:
基于抽象的结果,通过编程语言去实现.
是一种创建新类的方式,用来继承类的属性
父类可以称为基类或者超类,新建的类称为派生类或者子类
python中可以继承一个或多个父类:
class 父类1:
pass
class 父类2:
pass
class 子类1(父类1): # 单继承
pass
class 子类2(父类1, 父类2): # 多继承
pass
3.2抽象:
抽象分为两个层次:
3.2.1将对象比较像的部分抽取成类
3.2.2将类比较像的部分抽取成父类
继承和抽象的关系(先抽象再继承)
3.3派生
子类可以添加自己新的属性或者可以在自己的类内部重新定义这些属性,都不会影响到父类
一旦重新定义了自己的属性和父类的重名,那么调用这个属性时,是以自己的为准(子类与父类重名会覆盖父类的属性)
在子类中,新建的重名的函数属性,在编辑函数功能时可能会用到父类的内容:
3.3.1在子类中执行父类的同名方法:super().父类方法()
class Dog(Animal):
def eat(self):
#在子类内部
super().eat()#执行父类同名方法
print(dog eat)
3.3.1在外部,子类想要调用父类的同名方法,需要给super传递参数:super(子类名,子类对象)
super(dog,d1).eat()
3.3.1与普通函数一样去执行父类的重名函数,通过类名调用类中的方法时,self也需要传递
class Dog(Animal):
def eat(self)
#在子类内部
super().eat()
print('dog eat')
Animal.eat()
父类名.父类方法(self)
3.3.1注意:__init__方法
class Dog(Animakl):
def __init__(self,name,type):
#子类继承父类后想要重写__init__必须要执行父类的__init__
super().__init__(name)
self.type=type