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

Java父类方法:this与super关键字的调用差异

问题解答

给定代码

父类泛型类A:

public class A<T>{
    public void print(){
        System.out.println("Hi");
    }
}

子类B:

public class B extends A<Integer>{

}

两者的区别

在当前代码里,super.print() 和 this.print() 确实都能调用到A类的print()方法,但底层逻辑完全不同:

  • this.print():遵循Java的方法查找规则,先从当前类B开始找print()方法。因为B没重写这个方法,所以会顺着继承链往上找父类A的实现,最终调用到A的print()。
  • super.print():直接绕过当前类的方法查找,直接去父类A中找print()方法并调用,不管子类有没有重写。

差异体现场景

如果给B类重写print()方法,两者的区别就会立刻显现:

public class B extends A<Integer>{
    @Override
    public void print(){
        System.out.println("Hello from B");
    }
}

此时:

  • 调用this.print()会输出 Hello from B,优先使用子类的重写实现
  • 调用super.print()会输出 Hi,强制使用父类的原始实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:03:15