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

Java作业:如何访问tree.getPosition().x与tree.getPosition().y的值?

问题解决思路与代码示例

核心问题在于getPosition()方法需要返回一个包含x和y属性的对象(而非单个数值),这样才能通过.x/.y访问坐标值。以下是具体实现方案:

1. 定义Position坐标类

首先创建一个用于存储坐标的类,确保x和y为公共字段(匹配讲师代码的调用方式):

public class Position {
    public int x; // 根据需求可改为double类型
    public int y;

    public Position(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

2. 实现Tree与Birch类

方案一:非抽象Tree类

如果Tree是普通类,直接实现getPosition()方法:

public class Tree {
    protected Position position; // 用protected允许子类访问

    public Tree(int x, int y) {
        this.position = new Position(x, y);
    }

    public Position getPosition() {
        return this.position;
    }
}

public class Birch extends Tree {
    // 子类通过父类构造方法初始化坐标
    public Birch(int x, int y) {
        super(x, y);
    }
}

方案二:抽象Tree类

如果Tree是抽象类,定义抽象getPosition()方法,由Birch实现:

public abstract class Tree {
    protected Position position;

    public Tree(int x, int y) {
        this.position = new Position(x, y);
    }

    public abstract Position getPosition();
}

public class Birch extends Tree {
    public Birch(int x, int y) {
        super(x, y);
    }

    @Override
    public Position getPosition() {
        return this.position;
    }
}

常见错误排查

  • 确保getPosition()的返回类型是Position(或Java自带的java.awt.Point),而非int/double等基本类型——基本类型没有.x属性。
  • 检查Position类中x/y的访问修饰符:必须是public,否则无法直接通过.x访问(若用private需配套getX()方法,但讲师代码调用方式不匹配)。
  • 确认子类Birch正确初始化position对象:通过父类构造方法传递坐标,避免getPosition()返回null导致空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:26