【Python进阶篇 面向对象程序设计(3) 继承】

文章目录

在面向对象编程中,被继承的类称为父类,新的类称为子类。

1、继承的基本语法

(1)单继承

bash 复制代码
# 继承
# 父类
class Fruit:
    color = '绿色'

    def harvest(self, color):
        print("水果是:" + color + "的!")
        print("水果原来是:" + Fruit.color + "的!")


# 子类
class Apple(Fruit):
    color = '红色'

    def __init__(self):
        print("我是苹果")


class Orange(Fruit):
    color = '橙色'

    def __init__(self):
        print("\n我是橘子")


apple = Apple()
apple.harvest(apple.color)
orange = Orange()
orange.harvest(orange.color)

(2)多重继承

bash 复制代码
    class 父类1:
    pass

class 父类2:
    pass

class 子类(父类1, 父类2):  # 子类继承多个父类
    pass 

2、方法重写

子类可以覆盖父类的方法,实现自定义行为。

bash 复制代码
class Animal:
    def speak(self):
        return "通用叫声"

class Dog(Animal):
    def speak(self):  # 重写父类方法
        return "Woof!"

3、super()函数

调用父类的方法(常用于初始化和扩展功能)。

bash 复制代码
class Fruit:
    def __init__(self, color="绿色"):
        Fruit.color = color

    def harvest(self):
        print("水果原来是:" + Fruit.color + "的!")


class Apple(Fruit):
    def __init__(self):
        print("我是苹果!")


apple = Apple()
apple.harvest()

直接运行上面的代码有报错:

原因是在子类的__init__()方法中不会自动调用父类的__init__()方法,需要使用super()函数。

bash 复制代码
class Fruit:
    def __init__(self, color="绿色"):
        Fruit.color = color

    def harvest(self):
        print("水果原来是:" + Fruit.color + "的!")


class Apple(Fruit):
    def __init__(self):
        print("我是苹果!")
        super().__init__()  ## 调用父类的__init__()方法


apple = Apple()
apple.harvest()
相关推荐
超龄超能程序猿12 分钟前
图片查重从设计到实现(5)Milvus可视化工具
python·milvus
LZQqqqqo38 分钟前
C#_ArrayList动态数组
开发语言·windows·c#
睿思达DBA_WGX1 小时前
Python 程序设计讲义(27):字符串的用法——字符串的常用操作
开发语言·python
CodeCraft Studio1 小时前
国产化Excel处理组件Spire.XLS教程:使用 Java 将 CSV 转换为 Excel
java·python·excel
云天徽上1 小时前
【数据可视化-74】电信用户流失数据可视化分析:Python + Pyecharts 炫酷大屏(含完整的数据,代码)
开发语言·python·信息可视化·数据挖掘·数据分析·数据可视化·pyecharts
鲁Q同志1 小时前
java导入pdf(携带动态表格,图片,纯java不需要模板)
java·开发语言·pdf
_frank2222 小时前
kotlin使用mybatis plus lambdaQuery报错
开发语言·kotlin·mybatis
ZhuYuxi3332 小时前
【Kotlin】const 修饰的编译期常量
android·开发语言·kotlin
Bryce李小白2 小时前
Kotlin 实现 MVVM 架构设计总结
android·开发语言·kotlin
Kiri霧2 小时前
Kotlin位运算
android·开发语言·kotlin