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

如何在主类中调用继承父类的扩展类内的自定义方法

问题原因及解决方案

你遇到的是Java面向对象中向上转型后无法调用子类独有方法的典型问题,原因如下:

  • 你的代码中把customRectangles子类实例赋值给了编译时类型为Rectangle父类的变量rectangle
  • Java编译器在编译阶段只会校验变量声明类型(也就是Rectangle)中是否存在调用的方法,而Rectangle类本身没有定义getObject()方法,因此编译直接报错,无法运行。

方案1:直接用子类类型声明变量(最推荐,无额外开销)

不需要做向上转型,直接用自定义子类类型声明变量,就能直接调用子类定义的所有方法:

@Override
public void start(Stage arg0) throws Exception {
    // 直接声明为customRectangles类型
    customRectangles rectangle = new customRectangles(5);
    int i = rectangle.getObject();
    System.out.println(i);
}

方案2:强制向下转型(适用于必须用父类声明的多态场景)

如果业务要求必须用Rectangle作为变量声明类型,调用时需要先强转为子类类型再调用方法,建议增加类型校验避免转换异常:

@Override
public void start(Stage arg0) throws Exception {
    Rectangle rectangle = new customRectangles(5);
    // 先判断实际类型,避免类型转换异常
    if (rectangle instanceof customRectangles) {
        int i = ((customRectangles) rectangle).getObject();
        System.out.println(i);
    }
}

内容的提问来源于stack exchange,提问作者Pankaj-Talesara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:27:03