You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

子类Child的doSomething(HashMap<Integer,Integer>)是否重写父类的doSomething(Map<Integer,Integer>)?

子类Child的doSomething方法是否重写了父类Parent的对应方法?

结论:没有,这属于方法重载,而非重写。

Java中方法重写的核心要求之一是:方法的参数列表必须与父类被重写方法完全一致(返回值允许协变类型,但参数类型不允许缩小范围)。

看给出的代码:

public class Parent {
    public void doSomething(Map<String,String> map){
        System.out.println("Parent");
    }
}
public class Child extends Parent {
    public void doSomething(HashMap<String,String> map){
        System.out.println("Child");
    }
}

父类方法的参数是Map<String,String>(接口类型),子类方法的参数是HashMap<String,String>(Map的实现类),两者参数类型并不完全相同。这种情况下,子类的方法只是在当前类中新增了一个同名但参数不同的方法,属于方法重载,而非对父类方法的重写。

可以通过一个简单的调用验证:

Parent parent = new Child();
// 传入HashMap对象,此时会调用父类的doSomething方法
parent.doSomething(new HashMap<>());

执行这段代码会输出Parent,说明父类的方法没有被重写,子类的方法只是一个独立的重载方法。

内容的提问来源于stack exchange,提问作者Tom Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:32:05