温馨提示×

温馨提示×

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

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

超类方法可以被重写吗

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

在面向对象编程中,超类(父类)的方法可以被重写(override),这是面向对象三大特性之一“多态”的重要体现。

下面分语言说明,并给出注意点。


一、什么是方法重写(Override)

方法重写指的是:

子类重新定义父类中已经存在的方法,方法名、参数列表、返回类型相同(或协变),但实现不同。

重写后,调用该方法时,实际执行的是子类的方法


二、常见语言中的情况

✅ Java

class Parent {
    void say() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    @Override
    void say() {
        System.out.println("Child");
    }
}

调用:

Parent p = new Child();
p.say(); // 输出 Child

可以重写
❗ 注意:

  • 父类方法不能是 final
  • 访问权限不能比父类更严格
  • 静态方法不能被重写(只能被隐藏)

✅ Python

class Parent:
    def say(self):
        print("Parent")

class Child(Parent):
    def say(self):
        print("Child")

可以重写
Python 是动态语言,没有强制限制,只要方法名相同即可。


✅ C++

class Parent {
public:
    virtual void say() {
        cout << "Parent";
    }
};

class Child : public Parent {
public:
    void say() override {
        cout << "Child";
    }
};

可以重写

  • 父类方法必须是 virtual
  • 否则是“隐藏(hide)”,不是重写

✅ C#

class Parent {
    public virtual void Say() {
        Console.WriteLine("Parent");
    }
}

class Child : Parent {
    public override void Say() {
        Console.WriteLine("Child");
    }
}

可以重写

  • 父类方法必须是 virtual / abstract
  • 子类使用 override

三、哪些方法“不能”被重写?

情况 是否可重写
final / sealed 方法
static 方法 ❌(只能隐藏)
私有方法
构造方法

四、重写 vs 重载(容易混淆)

对比 重写 重载
发生位置 子类与父类 同一类中
方法名 相同 相同
参数列表 相同 不同
返回类型 相同或协变 可不同
目的 运行时多态 编译时多态

五、一句话总结

超类的方法可以被重写,只要它不是 final / static / private,并且子类满足重写规则。
这是实现多态和扩展行为的关键机制。

如果你有具体语言或代码示例,我可以帮你逐行分析。

向AI问一下细节

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

AI