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

Java抽象类中返回不同子类对象的抽象方法返回类型定义

解决方案:将抽象方法返回类型设为Block

核心结论

把父类Block中的抽象rotate方法返回类型从void改为Block即可。所有方块子类(包括T、Ttilt这类变体)都是Block的派生类,遵循多态规则,子类重写该方法时可以返回任意Block子类的实例,完全满足你的需求。

代码示例

abstract class Block {
    // 修改后的抽象方法
    public abstract Block rotate();
}

class T extends Block {
    @Override
    public Block rotate() {
        // 返回T的变体子类Ttilt实例
        return new Ttilt();
    }
}

class Ttilt extends Block {
    @Override
    public Block rotate() {
        // 可返回原T类或其他Block子类
        return new T();
    }
}

关于你之前的尝试

你修改子类参数的思路完全偏离了问题核心——当前问题是返回值类型不匹配,和方法参数无关。原方法返回void无法返回对象,必须先修改父类的方法返回类型,子类才能合法重写并返回具体实例。

可用于搜索的关键词

  • 抽象类 多态返回类型
  • 协变返回类型
  • 父类方法 返回子类实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:42:11