【问题标题】:Java - Return current class type [duplicate]Java - 返回当前类类型
【发布时间】:2026-01-21 22:00:01
【问题描述】:

我有一个类“Num”、一个类“Num2”和一个“Num2”实例,如下所示:
public class Num {
    private int num;
    public Num() {
        num = 0;
    }
    public Num add2() {
        this.num += 2;
        return this;
    }       
}
public class Num2 extends Num {}
Num2 n = new Num2();

当我使用n.add2() 时,我得到一个Num 对象。
如何从 Num 继承到 Num2 并分别“更改”返回类型?
谢谢!

【问题讨论】:

  • 目前Num2 n = new Num2(); 在任何类之外声明。 Java 中不允许这样的事情。
  • @Amongalen 我写了一个例子

标签: java class return


【解决方案1】:

您可以使用覆盖和向下转换概念来实现此目的。

示例解决方案:

public class Num2 extends Num{

    @Override
    public Num2 add2() {

       return (Num2) super.add2();//Downcasting

    }       

}

【讨论】:

  • super.add2(); return this; 根本没有任何转换。