面向对象的三大特性
继承的概念:子类 拥有父类的所有 方法 和 属性
**继承的传递
**
**语法
**
class 类(父类)
pass
示例
class Animal:
def eat(self):
print("动物都得吃饭....")
class Dog(Animal):
""" 小狗继承动物所有的属性和方法 """
def run(self):
print("小狗会跑步...")
class XiaoBai(Dog):
"""同时具备 狗和动物类的所有属性 """
def color(self):
print("我的颜色是白色的....")
# 小狗继承动物类,具备动物类中的所有方法,同时小狗有自己独特的 跑步方法
dog=Dog()
dog.eat()
dog.run()
# 小白拥有动物和狗 的所有属性和方法
xiaoBai=XiaoBai()
xiaoBai.eat()
xiaoBai.run()
xiaoBai.color()
**输出结果
**
**方法的重写
**
示例
class Animal:
def eat(self):
print("动物都得吃饭....")
def drunk(self):
print("动物要喝水....")
def sleep(self):
print("动物要睡觉...")
class Dog(Animal):
# 重写 动物喝水的方法
def drunk(self):
print("小狗要喝牛奶....")
# 扩展睡觉的方法
def sleep(self):
super().sleep()
print("小狗还要做梦...")
dog=Dog()
dog.eat()
dog.drunk()
dog.sleep()
输出结果
**私有方法和属性
**
示例
class A:
# 初始化属性
def __init__(self):
# 定义私有属性
self.__name="张三"
# 定义公有属性
self.age=12
# 定义私有方法
def __hello(self):
print("我是私有方法 hello.....")
# 定义公有方法
def world(self):
print("我是公有方法,我要开始调用私有属性和方法了...")
print("我的私有属性名称是:%s" %self.__name)
self.__hello()
class B(A):
def test(self):
# 通过调用父类的公有方法,打印父类的 私有属性和方法
self.world()
print("直接访问父类的公有属性age是:%d" %self.age)
b=B()
b.test()
输出结果
**多继承
**
**语法
**
class 类(父类1,父类2):
pass
**注:如果不同的父类中存在 同名的方法,子类对象在调用父类方法时,按继承 **从左到右的顺序查找,找到了就执行,不再往后查找
**开发时,应该尽量避免这种容易产生混淆的情况,如果父类之间 ****存在同名的属性或方法,应该 尽量避免使用多继承 **
示例
class Person:
def work(self):
print("我是人,我会工作...")
class Spider:
def climb(self):
print("我是蜘蛛,我会爬行...")
class SpiderPerson(Person,Spider):
def workClimb(self):
print("我是蜘蛛人,我有人和蜘蛛的所有属性和方法...")
spiderPerson=SpiderPerson()
spiderPerson.work()
spiderPerson.climb()
spiderPerson.workClimb()
输出结果
多态
示例
class Animal:
def eat(self):
print("我是动物要吃东西...")
class Dog(Animal):
def eat(self):
print("我是狗,要吃骨头...")
class Cat(Animal):
def eat(self):
print("我是猎,要吃鱼...")
class Test:
# 接收一个动物类,动物的共有方法就是 eat
def fun(self,animal):
animal.eat()
# 定义两个继承了 动物类的 动物
dog=Dog()
cat=Cat()
# 定义统一接口访问
test=Test()
test.fun(dog)
test.fun(cat)
**输出结果
**
全部0条评论
快来发表一下你的评论吧 !