温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何调用超类构造函数

发布时间:2026-07-25 13:40:08 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

调用超类(父类)构造函数的方式取决于你使用的编程语言。下面以最常见的几种语言为例说明。


一、Python 中调用超类构造函数

1️⃣ 使用 super()(推荐)

class Parent:
    def __init__(self, name):
        self.name = name

class Child(Parent):
    def __init__(self, name, age):
        super().__init__(name)   # 调用父类构造函数
        self.age = age

✅ 优点:

  • 自动处理多继承顺序(MRO)
  • 代码更简洁、安全

2️⃣ 直接调用父类名(不推荐)

class Child(Parent):
    def __init__(self, name, age):
        Parent.__init__(self, name)
        self.age = age

⚠️ 缺点:

  • 多继承时容易出错
  • 需要显式写 self

二、Java 中调用超类构造函数

使用 super

class Parent {
    Parent(String name) {
        this.name = name;
    }
}

class Child extends Parent {
    Child(String name, int age) {
        super(name);   // 必须是第一行
        this.age = age;
    }
}

✅ 说明:

  • super(...) 必须放在子类构造函数第一行
  • 如果父类有无参构造,super() 可省略(编译器自动加)

三、C++ 中调用父类构造函数

class Parent {
public:
    Parent(string name) {
        this->name = name;
    }
};

class Child : public Parent {
public:
    Child(string name, int age) : Parent(name) {  // 初始化列表
        this->age = age;
    }
};

✅ 特点:

  • 使用初始化列表
  • 在正常函数体执行前调用

四、JavaScript(ES6 类)

class Parent {
    constructor(name) {
        this.name = name;
    }
}

class Child extends Parent {
    constructor(name, age) {
        super(name);   // 必须先调用 super
        this.age = age;
    }
}

⚠️ 注意:

  • 在子类构造函数中,必须先调用 super() 才能使用 this

总结对比

语言 调用方式 是否必须第一行
Python super().__init__()
Java super(...) ✅ 是
C++ 初始化列表 ✅ 是
JS super(...) ✅ 是

如果你有具体语言或场景(如多继承、接口、抽象类等),可以告诉我,我可以给你更具体的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI