C语言重写Python函数,继承、重写和多态

关于继承、重写和多态这三种类型,我们在日常使用过程中使用最多的是继承,当我们需要很多类似的子类的时候,如果我们一一定义会浪费我们很多的空间和时间,在这个时候我们只要定义一个父类,也就是定义一个模板,然后全部继承父类的属性和行为即可,工厂在批量生产某个机械配件的时候,并不是每生产一个都需要画一个图纸,而是根据一个图纸进行批量生产,我们在程序里使用继承的时候也是采用的这种思想,但是当我们想要对某个继承来的配件进行一定更改的时候,我们可以采用重写的方法,而多态则是综合了继承和重写,下面我们依次进行学习。

1. 继承

所谓继承,就是子继承父。

根据例题我们来学习一下继承。class Base:#定义一个名为Base的父类

def __init__(self,name,age,id):

self.name = name

self.age = age

self.id = id

print('继承了Base这个类')

print('我的名字:',self.name)

print('我的年龄:',self.age)

print('我的学号:',self.id)

def goto_school(self):

print(self.name,'正在使用Base类中的goto_school方法去上学')

class Student(Base):#继承父类的时候会继承父类中的所有方法

pass

xiaoming = Student('小明',20,1001)

xiaoming.goto_school()

输出结果为:继承了Base这个类

我的名字: 小明

我的年龄: 20

我的学号: 1001

小明 正在使用Base类中的goto_school方法去上学

我们来分析一下这个例子,首先我们在上面定义了一个名为Base的类,这个类为我们提供了一个构造方法,包含了姓名,名字和学号,然后还提供了一个goto_school()的方法,然后我们又在下面定义一个名为Student的类,这个类继承了上面的Base类,然后我们直接调用Student类,通过输出结果我们可以看出即使Student类中什么都没有,仍然可以执行出一系列操作,这些行为和属性都是由Base中继承而来的,然后最后一行我们还调用了Base中的方法,仍然是可以调用成功的。

2. 重写

重写是基于继承的一种方法,也就是说如果我们不想要从父类中继承来的属性或者行为,我们可以在子类中进行方法的重写。

看下面的例子:class Base:#定义一个父类

def __init__(self,name):

self.name = name

print('继承了Base')

def eat_dinner(self):

print(self.name,'晚饭吃火锅')

class Student(Base):#继承父类的时候会继承父类中的所有方法

def eat_dinner(self):

print(self.name,'晚饭吃自助餐')

xiaoming = Student('小明')

xiaoming.eat_dinner()

输出结果为:继承了Base

小明 晚饭吃自助餐

通过这个例子我们可以看出,虽然Student方法继承了Base中的方法并输出了‘继承了Base’,但是当xiaoming使用eat_dinner方法的时候,他使用的是子类重写过后的方法,而不是继承而来的方法。我们在重写的时候需要注意,重写的方法要保持名字和参数的一致性。

3. 多态

关于多态,多态就是上面两种方式的结合,通过多态我们可以写出各种各样的程序。

看下图。

e101c36316dc59031fdc5ef31b74e334.png

多态即一个方法在父类和子类中存在着不同种用法,可以分别调用。

看下面的例子:class Base:

def __init__(self,name):

self.name =name

print('%s会读书'%self.name)

def reading(self):

print('%s在读语文书'%self.name)

class Inherit_One(Base):

def reading(self):

print('%s在读英语书'%self.name)

class Inherit_Two(Base):

def reading(self):

print('%s在看漫画书'%self.name)

a = Base('a')

a.reading()

b = Inherit_One('b')

b.reading()

c = Inherit_Two('c')

c.reading()

输出结果为:a会读书

a在读语文书

b会读书

b在读英语书

c会读书

c在看漫画书

可以看出每个继承者都重写了reading方法,然后我们在调用这个方法的时候通过不同的类去调用,这种方式可以帮助我们在不同类中定义相同名字的不同方法,看似混乱,但是在我们现实中的各种管理系统当中往往都是离不开多态的使用。

4. 总结

通过这一节的学习,想必大家都认识到了继承和重写的方法,关于多态则需要大家在实际问题中去多多练习掌握,面向对象听起来比较抽象,但掌握起来并不太难。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值