python学习第五天(2)——继承和多态

继承:实现代码的重用。相同代码不需要重新进行编写。子类拥有父类的所有属性和方法

语法:class 类名(父类名)

class Animal:
    def eat(self):
        print("吃")
    def drink(self):
        print("喝")
class Dog(Animal):
    def dark(self):
        print("汪汪叫")
wangcai = Dog()
wangcai.eat()
wangcai.drink()
wangcai.dark()
print(wangcai)

输出结果:

吃
喝
汪汪叫
<__main__.Dog object at 0x000001FBCF69AC50>

对父类方法进行扩展:
1.在子类中重写父类方法
2.在需要的位置用super().父类方法来调用父类方法的执。super()调用父类中封装的方法

class Animal:
    def eat(self):
        print("吃")
    def drink(self):
        print("喝")
class Dog(Animal):
    def bark(self):
        print("汪汪叫")
class Xiaotianquan(Dog):
    def fly(self):
        print("飞")
    def bark(self):
        #1 针对子类特有需求编写方法
        print("嗷嗷叫")
        #2 使用super调用原本在父类中的方法
        super().bark()
        #3 增加子类代码
        print("$#%2")
wangcai = Xiaotianquan()
wangcai.eat()
wangcai.drink()
wangcai.bark()
print(wangcai)

输出结果:

吃
喝
嗷嗷叫
汪汪叫
$#%2
<__main__.Xiaotianquan object at 0x000001C56572A2B0>

3.多继承:可以让子类同时具有多个父类属性和方法
语法:class 子类名(父类名1,父类名2…)

class A:
    def test1(self):
        print("test 方法")
class B:
    def demo(self):
        print("demo 方法")
class C(A,B):
    pass
c=C()
c.test1()
c.demo()

输出结果:

test 方法
demo 方法

多态:不同的子类对象调用相同的父类方法产生不同的结果。多态以继承和重写父类为前提。

class Dog(object):
    def __init__(self,name):
        self.name = name
    def game(self):
        print("%s玩球" % self.name)
class Xiaotiandog(Dog):
    def game(self):
        print("%s在天上玩耍" % self.name)
class Person(object):
    def __init__(self,name):
        self.name = name
    def game_with(self,dog):
        print("%s和%s愉快的玩耍" % (self.name,dog.name))
        #让狗玩耍
        dog.game()
#创建一个狗对象
wangwang = 1.Xiaotiandog("wangwang")2.Dog("wangwang")
#创建小明对象
xiaoming = Person("小明")
#让小明和狗玩
xiaoming.game_with(wangwang)

输出结果:

1.小明和wangwang愉快的玩耍
wangwang在天上玩耍
2.小明和wangwang愉快的玩耍
wangwang玩球

看以观察到1.2会产生不同结果,1用Dog类创建对象,2用Xiaotiandog创建对象,让不同的子类对象调用相同的方法(game()),在执行程序时,调用不同的狗对象实参,产生不同的执行结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值