Python基础:面向对象-继承和多态

一、继承

Python面向对象的继承指的是多个类之间的所属关系,即子类默认继承父类的所有属性的方法。

作用:可以减少代码重复,提升代码复用率。

简单示例如下:

#父类A
class Animal(object):
s = 'aaa'
def __init__(self, name):
self.name = name
def eat(self, s):
print(f'吃{s}')
#子类B 
class Cat(Animal):
pass

cat = Cat('加菲猫')
cat.eat('小鱼干')

在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类。

子类重写父类的同名属性和方法:

class Dog(Animal): 
    # 父类中虽然只定义了初始化的属性只有name,但是我自己要在这个属性的基础上进行扩展
    def __init__(self,name,color):
        # 要先调用父类的初始化方法,便于继承父类的东西
        super().__init__(name)
        self.color = color

    # 重写父类的eat方法
    def eat(self,s,n):
        print(f'吃了{n}斤{s}')

    def sleep(self):
        print(f'{self.name}正在睡觉')

 

二、多态

简单地说,多态就是“具有多种形态”,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象中的方法。

简单示例:

class Animal(object):
  def eat(self):
    print('动物要吃东西')
class Dog(Animal):
  def eat(self):
    print('狗喜欢吃骨头')
class Person(object):
  def eat(self):
    print('人吃五谷杂粮')
   
def fun(object):
  object.eat()
fun(Animal()) fun(Dog()) fun(Person()

 

posted @ 2023-03-20 11:45  阳光倾林  阅读(71)  评论(0编辑  收藏  举报