我正在尝试使用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等,尤其如此!