02_Python3中对继承的认识

0.前言

  这篇博客主要是通过例题加强对Python面向对象编程技术中继承概念的理解。



问题1:
1.动物有吃东西、睡觉的动作
2.狗子除了吃东西、睡觉,还可以汪汪叫
3.飞天神狗除了吃东西、睡觉,可以嗷嗷叫和飞天


分析:
1.类——动物、狗子、飞天狗
2.属性方法——动物(吃东西、睡觉),狗子(吃东西、睡觉、汪汪叫),神狗(吃东西、睡觉、嗷嗷叫、飞行)
3.父类为动物、子类一代为狗子、子类二代为飞天狗。
4.狗子类拥有动物类的全部方法外,还有汪汪叫的方法。
5.飞天狗除了拥有动物类和狗子类的所有方法外,叫声从汪汪叫变成了嗷嗷叫,除此之外还能飞。


代码如下:


# 创建动物类
class Animal:
    # 创建吃的方法
    def eat(self):
        print('[动物]吃东西!')
    # 创建睡觉的方法
    def move(self):
        print('[动物]移动')


# 创建狗子类
class Dog(Animal):
    # 重写移动方法
    def move(self):
        print('[普通狗子]四条腿跑!')
    # 创建叫的方法
    def bark(self):
        print('[普通狗子]汪汪叫!')

    def wag_tail(self):
        print('[普通狗子]摇尾巴!')


# 创建飞天神狗类
class Flydog(Dog):
    # 重新父类叫的方法
    def bark(self):
        print('[飞天神狗]嗷嗷叫!')

    # 创建飞的方法
    def move(self):
        print('[飞天神狗]飞上天了!')


print('动物类对象:')
# 创建动物的对象
animal = Animal()
animal.move()
# 父类对象不能调用子类方法
# animal.bark()
print('-'*50)

print('狗子对象:')
# 创建狗子的对象
ordinary_dog = Dog()
# 调用父类方法
ordinary_dog.eat()
# 调用重写方法
ordinary_dog.move()
# 调用自己方法
ordinary_dog.bark()
ordinary_dog.wag_tail()
print('-'*50)

print('飞天狗子对象:')
# 创建飞天神狗的对象
fly_dog = Flydog()
# 调用父类方法
fly_dog.eat()   # 调用父类Dog的父类Animal的方法
fly_dog.wag_tail()  # 调用父类Dog的方法
# 调用重写方法
fly_dog.bark()
fly_dog.move()

运行结果:
动物类对象:
[动物]移动
--------------------------------------------------
狗子对象:
[动物]吃东西!
[普通狗子]四条腿跑!
[普通狗子]汪汪叫!
[普通狗子]摇尾巴!
--------------------------------------------------
飞天狗子对象:
[动物]吃东西!
[普通狗子]摇尾巴!
[飞天神狗]嗷嗷叫!
[飞天神狗]飞上天了!

说明:

  • 子类继承父类后,享有父类的所有属性和方法。(如上面程序中的狗子类和飞狗类都可以调用动物类的方法。)
  • 子类可以调用父类的方法,但父类不能调用子类的方法
  • 若父类中的属性和方法不能满足子类需求时,可以在子类中定义新的方法。(如狗子类中的bark方法和飞狗类的fly方法)
  • 若父类中的方法不是子类中所想要的结果,则可以在子类中定义一个与父类同名的方法来重写父类中的方法。(如飞狗类的bark方法)
  • 父类中修改属性和方法对子类也有影响,子类中修改或重写方法,对父类没有任何影响。(如普通狗调用bark方法和飞狗对象调用bark方法)

时间:2019年5月6日23:27:16


猜你喜欢

转载自blog.csdn.net/qq_44713454/article/details/89893479
今日推荐