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
相关产品推荐
相关产品推荐

