初识面向对象2

本文介绍了面向对象编程(OOP)的概念、主要特性(封装、继承和多态)、优点以及在Python中的应用,包括组合和继承的实例,强调了代码重用、灵活性和扩展性。
摘要由CSDN通过智能技术生成

引言:

面向对象(Object-Oriented,简称OO)是一种编程思想,它基于“对象”的概念,将现实世界中的事物抽象为计算机程序中的对象。每个对象都拥有其独特的属性和方法,通过对象之间的交互来实现程序的功能。面向对象编程(Object-Oriented Programming,简称OOP)是这种编程思想的具体实现方式

面向对象编程(OOP)的三大特性是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)

  1. 封装:封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,只能通过该类提供的方法进行访问。封装的主要目的是保护对象内部的数据结构,防止外部程序随意访问和修改。封装通过将数据和操作数据的函数绑定在一起,形成了一个独立的实体,即对象。
  2. 继承:继承是指子类可以继承父类的所有非私有属性和方法,并且可以重写或添加新的属性和方法。继承的主要目的是为了实现代码的重用和扩展。通过继承,子类可以继承父类的功能和属性,同时还可以定义自己独有的功能和属性。这种机制大大提高了代码的可维护性和可扩展性。
  3. 多态:多态指的是同一个方法在运行时可以是不同的对象,即同一个接口可以有不同的实现方式。多态的主要目的是为了实现程序的灵活性和可扩展性。通过多态,我们可以在运行时根据需要动态地绑定对象和方法,从而实现不同的行为。

面向对象的优点主要是:

  • 代码重用性:通过继承和组合,可以重用已有的代码,减少重复开发。
  • 灵活性:对象可以动态地绑定方法和属性,支持运行时多态。
  • 易于维护:封装和抽象使得代码结构清晰,易于理解和维护。
  • 扩展性:通过继承和接口,可以方便地扩展系统的功能。

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

    

4结语:其实这个可能没有完全按照面向对象的所学内容,如果有所遗漏,欢迎大家的斧正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yz_518 Nemo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值