我正在尝试使用getters / setters在子类中设置颜色,但是存在编译错误。

//world.java
import java.awt.Color;

public class world {
    private Color color;

    public Color getColor() {
        return color;
    }
    public void setColor(Color color) {
        this.color = color;
    }
}

//object.java
public class object extends world {
    public object{
        setColor(new world.Color(255,0,0); //compile error
    }
}


我可以通过在子级中导入java.awt.Color并键入setColor(new Color(255,0,0)来轻松解决此问题,但是当它已经在父级中导入时,它不是多余的吗?我还尝试了其他语法,例如setColor(world.setColor(new Color(255,0,0))),但这给出了不同的错误。正确执行此操作的正确语法是什么?

最佳答案

只是简单

   setColor(new Color(255,0,0); //no compile error


(使用类的每个文件中都必须有import语句...)

说明:

当前的类扩展了world-这意味着setColor()方法“就在那里”而无需再次声明。它将正确设置color类的world实例字段,而无需明确指定...具有static修饰符的方法和字段始终与类本身相关,而不与类实例相关

为什么setColor(world.setColor(new Color(255,0,0)))不起作用?

该语法用于访问world类的静态方法-但是这种方法不存在。您拥有的是一种非静态方法,在这种情况下,这是完全合适的,因为颜色值分别与该类的每个实例相关。因此,在这种情况下,world.setColor()语法无效。

根据游戏评论,GameObject换成了世界

一些规则


类名以大写开头
不要使用与JDK库类相似或完全相似的名称。对于Object,String等,尤其如此!

10-06 09:11