
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
在代码里继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。注意:python中的继承分为:单继承和多继承
继承的目的就是提高代码的重用率减少了很多不必要的代码量,有下图就可以看出动物有,猫和狗的基本特性,动物就是父,猫和狗就是子
继承的特点
1、在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
2、在继承中基类的构造( init ()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
3、Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
4、继承中父类:用于被继承的类,称之为父类,也叫做基类,或者超类。子类:继承其他类的类,称之为子类,也叫做派生类。
python支持类的继承。如果一种语言不支持继承,类就没什么意义。这方面我语言上说在流畅还不如看看代码来的实际。(个人觉得)
class Animal: #父类
def eat(self):
print("-----吃-----")
def drink(self):
print("-----喝-----")
def sleep(self):
print("-----睡-----")
class Dog(Animal): #子类继承父类
"""
def eat(self):
print("-----吃-----")
def drink(self):
print("-----喝-----")
def sleep(self):
print("-----睡-----")
"""
pass
class Cat:
pass
wang_cai = Dog()
wang_cai.eat()
wang_cai.drink()
wang_cai.sleep()#wang——cai继承了动物的吃,喝,睡
多层继承
简单说就是这样的关系:动物——狗——哮天犬(就是越来越具体化了)一个子类继承了父类之后又被其他子类继承
class Animal:
def eat(self):
print("-----吃-----")
def drink(self):
print("-----喝-----")
class Dog(Animal):
def bark(self):
print("-----汪汪叫------")
class XTQ(Dog):
"""定义了一个哮天犬 类"""
pass
#继承之后哮天犬就会“吃”,“喝”,“汪汪叫”
顾名思义就是重新写这个方法但是: 方法名是不变的
比如:
class Animal: #父类
def eat(self):
print("-----吃-----")
def drink(self):
print("-----喝-----")
class Dog(Animal):
def bark(self):
print("-----汪汪叫------")
class XTQ(Dog): #重写Dog方法
"""定义了一个哮天犬 类"""
def bark(self):
print("----嗷嗷叫-----")
#重写了bark
这张图就比较清楚的表达了多继承的意思,一个动物同时继承了企鹅和二哈
如下代码:
# 定义一个父类
class qi-e:
def printA(self):
print('----企鹅----')
# 定义一个父类
class er-ha:
def printB(self):
print('----二哈----')
# 定义一个子类,继承自A、B
class C(A,B):
def printC(self):
print('----我也不知道是什么----')
obj_C = C()
obj_C.printA()
obj_C.printB()
作用:让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数。
特点:只关心对象的实例方法是否同名,不关心对象所属的类型;对象所属的类之间,继承关系可有可无;多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;多态是调用方法的技巧,不会影响到类的内部设计。
class Duck:
def quack(self):
print("Quaaaaaack!")
class Bird:
def quack(self):
print("bird imitate duck.")
class Doge:
def quack(self):
print("doge imitate duck.")
def in_the_forest(duck):
duck.quack()
duck = Duck()
bird = Bird()
doge = Doge()
for x in [duck, bird, doge]:
in_the_forest(x)
拓展:
Java中多态性的表现: 多态性,可以理解为一个事物的多种形态。同样python中也支持多态,但是是有限的的支持多态性,主要是因为python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时python不支持重载。在python中 多态的使用不如Java中那么明显,所以python中刻意谈到多态的意义不是特别大。
武汉达内免费试听课程火热报名中,带你轻松入行,26大课程全国45个城市,129家中心均可就近学习,学完后,达内老师会帮助进行面试辅导,在面试前,就带你跨过可能存在的坑,让你入职更加顺利
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请添加3216764521学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。