【问题标题】:Java - rectangle getBounds();Java - 矩形 getBounds();
【发布时间】:2017-12-10 04:55:36
【问题描述】:

今天我决定使用 Java 制作一个基于自上而下的游戏。我已经制作了窗口并包含了 Jframe。但我发现在 Rectagle GetBounds(); 中创建 GameObject 时出现问题; .我不知道到底是什么,因为我是初学者,而且我知道 java 的基础知识:( .

如果有人能帮我解决这个问题,我给出下面的代码示例:

package example;

import java.awt.Graphics;

import java.awt.Rectangle;

public abstract class GameObject {
protected int x, y;
protected float velX = 0, velY = 0;

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

public abstract void tick();
public abstract void render(Graphics g);
public abstract void Rectangle getBounds();

public int getX() {
    return x;
}

public void setX(int x) {
    this.x = x;
}

public float getVelX() {
    return velX;
}

public void setVelX(float velX) {
    this.velX = velX;
}

public float getVelY() {
    return velY;
}

public void setVelY(float velY) {
    this.velY = velY;
}
} 

代码导致以下错误:

字段 Rectangle 的非法修饰符;只有公共的,受保护的, 允许 private、static、final、transient 和 volatile 返回类型 对于该方法缺少语法错误,插入“;”去完成 FieldDeclaration 此方法需要正文而不是分号 void 是变量 Rectangle 的无效类型

注意:我使用的是 Java SE-8 和 Eclipse Oxigen。

【问题讨论】:

  • 如果getBounds() 返回一个Rectangle 它不应该有void
  • voidRectangle 都是 getBounds 的返回类型。一个方法不能有多种返回类型。
  • public abstract void Rectangle getBounds(); 应该是public abstract Rectangle getBounds();

标签: java rectangles


【解决方案1】:

如果要创建 GameObject 的实例(如:new GameObject()),那么 GameObject 类不能是抽象的。

您不能创建抽象类的实例。您只能创建一个继承自抽象类并实现全部或部分方法的类。

您可以在这里实现方法tick()、render(Graphics g) 和getBounds(),或者创建一个继承自GameObject 的新类(公共类GameObjectImp 扩展GameObject)并在那里实现方法。

【讨论】:

  • 这似乎与问题中显示的错误无关,因此不回答问题。类和方法被声明为抽象,没有为抽象方法提供主体 - 我在这里看不到任何证据表明 OP 不知道抽象意味着什么。
  • 谢谢你的回复,对不起,我不知道如何更好地解释我想要做什么,我找到了一些视频教程来制作一个自上而下的射击游戏,如果你想看教程:youtu.be/Px6d_i46GbA 问题开始于:6:00
  • @c56edfrq 该视频中的getBounds 方法在签名中没有void
  • 我对一些事情有点困惑,对不起所有回答我问题的人xD。
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多