
面向对象三大特性
继承的概念:子类 拥有 父类 的所有 方法 和 属性

class 类名(父类名):
passDog 类是 Animal 类的子类,Animal 类是 Dog 类的父类,Dog 类从 Animal 类继承Dog 类是 Animal 类的派生类,Animal 类是 Dog 类的基类,Dog 类从 Animal 类派生C 类从 B 类继承,B 类又从 A 类继承,那么 C 类就具有 B 类和 A 类的所有属性和方法应用场景
重写 父类方法有两种情况:
具体的实现方式,就相当于在 子类中 定义了一个 和父类同名的方法并且实现
重写之后,在运行时,只会调用 子类中重写的方法,而不再会调用 父类封装的方法
super().父类方法 来调用父类方法的执行关于 super
Python 中 super 是一个 特殊的类super() 就是使用 super 类创建出来的对象
B 的对象不能直接访问 __num2 属性B 的对象不能在 demo 方法内访问 __num2 属性B 的对象可以在 demo 方法内,调用父类的 test 方法test 方法内部,能够访问 __num2 属性和 __test 方法class 子类名(父类名1, 父类名2...)
pass问题的提出
提示:开发时,应该尽量避免这种容易产生混淆的情况! —— 如果 父类之间 存在 同名的属性或者方法,应该 尽量避免 使用多继承
class Dog(object):
def __init__(self, name):
self.name = name
def game(self):
print("%s 蹦蹦跳跳的玩耍..." % self.name)
class XiaoTianDog(Dog):
def game(self):
print("%s 飞到天上去玩耍..." % self.name)
class Person(object):
def __init__(self, name):
self.name = name
def game_with_dog(self, dog):
print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))
# 让狗玩耍
dog.game()
# 1. 创建一个狗对象
# wangcai = Dog("旺财")
wangcai = XiaoTianDog("飞天旺财")
# 2. 创建一个小明对象
xiaoming = Person("小明")
# 3. 让小明调用和狗玩的方法
xiaoming.game_with_dog(wangcai). 创建一个狗对象
wangcai = XiaoTianDog(“飞天旺财”)
xiaoming = Person(“小明”)
xiaoming.game_with_dog(wangcai)