• 11.面向对象(封装、继承、多态)


    1、面向对象编程三大特征:封装、继承、多态

    1)封装:面向对象编程的第一步 将属性和方法封装到一个抽象的类中,外界使用类创建对象,然后让对象调用方法,对象方法的细节都被封装在类的内部


    # 需求:小明爱跑步
    # 1.小明体重75.0公斤
    # 2.每次跑步会减肥0.5公斤
    # 3.每次吃东西体重会增加1公斤
    # 4.小美的体重是45.0公斤
    class People:
    weight=0
    name='null'
    def __init__(self,tz,name):
    # 实例属性
    self.weight=tz
    self.name=name

    def running(self):
    self.weight-=0.5
    print(f'每次跑步会减肥0.5公斤,现在的体重是{self.weight}')

    def eating(self):
    self.weight += 1
    print(f'每次吃东西体重会增加1公斤,现在的体重是{self.weight}')

    xiaoming=People(75,'小明')
    xiaoming.running()
    xiaoming.eating()
    xiaomei=People(45,'小美')
    xiaomei.eating()

    2)继承
    子类拥有父类以及父类的父类中封装的所有属性和方法。

    继承分为单继承和多继承

    注意:1)子类调用方法,先找自己,再找父类,再找父类的父类,以此类推(如果多继承,则采用就近原则来进行调用)

    1)单继承:

    class 子类名(父类名):
    类主体

    重写父类方法有两种方式:
    1、覆盖父类的方法
    如果在开发过程中,父类方法的实现和子类方法的实现完全不同,就可以使用覆盖的方法在子类中重新编写父类中的方法,在运行中,只会调用在子类中重写的父类的方法而不会调用父类的方法
    2、扩展父类方法
    如果在开发过程中,子类的方法的实现包含父类的方法的实现,在需要位置使用父类名.方法(self)来调用父类方法的执行,代码其他位置针对子类的需求,编写子类特有的代码实现


    class People:
    def __init__(self,name,age):
    self.name=name
    self.age=age
    print(self.name,self.age)

    def speak(self):
    print('父类方法speak')

    def sleep(self):
    print('父类的sleep方法.....')

    class Student(People):

    #子类重写父类方法
    def speak(self):
    # 子类方法需要调用父类方法如何进行调用
    People.speak(self)
    print('子类重写父类speak方法')

    dasheng=Student('大圣',20)
    # dasheng.sleep()
    dasheng.speak()

    2)多继承
    class 子类名(父类名1,父类名2):
    类主体


    class People:
    def __init__(self,name,age):
    self.name=name
    self.age=age
    print(self.name,self.age)

    def speak(self):
    print('父类方法speak')

    def sleep(self):
    print('父类的sleep方法.....')

    class pythonStudent(People):
    #子类重写父类方法
    def speak(self):
    # 子类方法需要调用父类方法如何进行调用
    People.speak(self)
    print('子类重写pythonStudent父类speak方法')

    class javaStudent:
    pass
    def speak(self):
    # 子类方法需要调用父类方法如何进行调用
    People.speak(self)
    print('子类重写javaStudent父类speak方法')

    class student(javaStudent,pythonStudent):

    def __init__(self,name):
    self.languae='中文'
    self.name=name

    CR7=student('CR7')
    CR7.speak()


    3)多态
    不同的子类调用相同的方法会执行不同代码(多态)

    class wx:
    def pay(self):
    print('采用微信支付')

    class zfb:
    def pay(self):
    print('采用支付宝支付')

    class yl:
    def pay(self):
    print('采用银联支付')

    def start_pay(object):
    object.pay()

    wx1=wx()
    yl1=yl()
    zfb1=zfb()
    start_pay(zfb1)

  • 相关阅读:
    form 表单验证常用正则记录
    定位某一项值在多维数据中的位置
    jquery weui picker多次动态赋值
    页面旋转立方体图片
    微信开发者工具中的正则表达式解析
    Jquery WEUI 滚动加载(infinite)不触发
    背景线条实现
    进入博客
    tomcat 修改内存配置
    win10配置jdk环境变量
  • 原文地址:https://www.cnblogs.com/Murraya/p/14020604.html
Copyright © 2020-2023  润新知