温馨提示×

温馨提示×

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

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

如何重写超类方法

发布时间:2026-09-01 13:16:23 来源:亿速云 阅读:83 作者:小樊 栏目:编程语言

在面向对象编程中,重写(Override)超类方法指的是在子类中重新定义从父类继承来的方法,以改变或扩展其行为。不同语言语法略有差异,下面以常见语言为例说明。


一、重写的基本原则

  1. 方法名、参数列表必须相同(Java/C++ 等静态语言)
  2. 返回类型通常要兼容(协变返回类型部分语言支持)
  3. 访问权限不能比父类更严格(如父类 public,子类不能 private
  4. 不能抛出比父类更多/更宽泛的受检异常(Java)
  5. 通常需使用注解或关键字显式声明(提高可读性、防止误写)

二、Java 示例

class Animal {
    public void speak() {
        System.out.println("Animal speaks");
    }
}

class Dog extends Animal {
    @Override
    public void speak() {
        System.out.println("Dog barks");
    }
}
  • @Override:编译期检查是否真的重写了父类方法

三、Python 示例

Python 不强制签名一致,靠命名约定:

class Animal:
    def speak(self):
        print("Animal speaks")

class Dog(Animal):
    def speak(self):
        print("Dog barks")

若想调用父类方法:

super().speak()

四、C++ 示例

class Animal {
public:
    virtual void speak() {
        cout << "Animal speaks" << endl;
    }
};

class Dog : public Animal {
public:
    void speak() override {
        cout << "Dog barks" << endl;
    }
};
  • virtual:父类方法可被重写
  • override:C++11 起推荐使用

五、调用父类被重写的方法

常使用 super(Java/Python)或 ParentClass.method(self)

super.speak(); // Java
super().speak() # Python

六、常见错误

  • 拼写错误导致“重载”而非“重写”
  • 参数列表不一致
  • 私有方法无法被重写
  • 静态方法一般不能被重写(只能隐藏)

如果你指的是某一门具体语言某个框架(如 Spring、React),可以告诉我,我可以进一步举例。

向AI问一下细节

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

AI