python面向对象特征之继承

面向对象特征(继承)

1. 什么是继承
	## 继承就是新建类的一种方式,新建的类我们称为 子类或者派生类, 被继承的类我们称之为父类或者 基类
    #  继承的特性是:子类可以使用父类中的属性或者方法
 	# 继承是类与类之间的关系
2.为什么要用继承
  	# 类解决了对象与对象之间代码冗余的问题 
    #  继承则解决的类与类之间的代码冗余问题

3. 如何使用继承
	# 新式类:继承了object类的子子孙孙类都是新式类
    # 经典类:没有继承object类的子子孙孙类都是经典类
    
    		#   新式类与经典类只有在python2中才区分 
        	#  python3都为新式类

基本使用

1. 不适用继承:
# 不使用继承
class Animal:
    def run(self):
        print('走路')

    def eat(self):
        print('吃饭')

class Dog:
    def run(self):
        print('走路')

    def eat(self):
        print('吃饭')

    def speak(self):
        print('汪汪叫')

class Person:
    def run(self):
        print('走路')
    def eat(self):
        print('吃饭')
    def work(self):
        print('上班')

        #   这样人和狗都有共同的特性 走路和吃饭 就有重复的特性 使得代码冗余 
        				# 这样就可以使用继承来解决这个问题
2.使用继承
class Animal:  # 它作为父类(基类)
    head = 'from Animal head'

    def run(self):
        print('走路')

    def eat(self):
        print('吃饭')


# Dog子类和Person子类都继承Animal父类
class Dog(Animal):
    def speak(self):
        print('汪汪叫')

class Person(Animal):
    def work(self):
        print('工作')


dog = Dog()  # 实例化
dog.eat()  #  找到父类Animal的eat方法
print(dog.head)  # 找到父类Animal的head属性

多继承

eg:
    
# 新式类:按照广度优先查询
# 经典类:按照深度优先查询
class A(object):
    def test(self):
        print('from A')


class B(A):
    # def test(self):
    #     print('from B')
    pass

class C(A):
    # def test(self):
    #     print('from C')
    pass


class D(B):
    # def test(self):
    #     print('from D')
    pass

class E(C):
    # def test(self):
    #     print('from E')
    pass


class F(D, E):  # 多继承
    # def test(self):
    #     print('from F')
    pass


f1 = F()
f1.test()  # 多继承 按照顺序找:对象自己>>类>>父类 (按照新式类优先查询)

img

posted @ 2021-12-06 21:26  JasonBorn  阅读(25)  评论(0编辑  收藏  举报