1 为什么要有继承?
代码块
优化代码,节省代码量
提高代码的复用性.
提高代码的维护性.
让类与类之间发生关系.
2 子类中即实现父类的方法,又实现自己的方法
代码块
super().父类方法名(参数(不需要传self))
父类名.父类方法名(参数,需要传self)
3 新式类和经典类
新式类:继承object类的类都叫新式类. python3x中所有的类默认都继承object,python3x中全部都是新式类.
深度优先和广度优先只能针对继承2个类的情况
广度优先
经典类:不继承object类就是经典类. Python2x 默认是经典类,也可以不默认让其继承object变成新式类.
深度优先
深度优先,广度优先: 只能是继承两个类的情况.
4 面向对象的三大特性是什么?
继承,多态,封装
5 练习题
a,定义一个父类Animal,在构造方法中封装三个属性,姓名,性别,年龄,再给其添加一个eat的方法,方法中显示%s正在吃饭(%s是哪个对象调用此方法,显示哪个对象名字)。
b,定义两个子类Person,Dog,全部继承这个父类Animal.
c,Person类中,有构造方法,封装一个皮肤的属性,有eat方法,方法中显示人类正在吃饭。
d,Dog类中,有构造方法,封装一个毛色的属性,有eat方法,方法中显示狗狗正在吃饭。
代码块
class Animal:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def eat(self):
print('%s正在吃饭' % self.name)
class Person(Animal):
def __init__(self, name, gender, age, skin):
super().__init__(name, gender, age)
self.skin = skin
def eat(self):
print('人类正在吃饭')
class Dog(Animal):
def __init__(self, name, gender, age, color):
super().__init__(name, gender, age)
self.color = color
def eat(self):
super().eat()
print('狗狗正在吃饭')
# 实例化一个人类的对象,让其封装姓名,性别,年龄,皮肤四个属性。
p1=Person('wangsiyu','male',24,'黄色皮肤')
# 实例化一个狗类的对象,让其封装姓名,性别,年龄,毛色四个属性
d1=Dog('hahapi','boye',8,'blue')
# 实例化一个人类的对象,让其只执行父类的eat方法(可以对人类代码进行修改)
# 把子类方法注释掉即可
# 实例化一个狗类的对象,让其既执行父类的eat方法,又执行子类的eat方法
d1=Dog('hahapi','boye',8,'blue')
d1.eat()

网友评论