Java 您可以在创建构造函数时调用对象上的方法吗?

Java 您可以在创建构造函数时调用对象上的方法吗?,java,methods,constructor,Java,Methods,Constructor,我创建了一个名为Ball of GOval的子类。我想创建一个黑色的球。为了让它发挥作用,我尝试了以下方法: 在一个类中,我创建了一个新的Ball对象 Ball ball = new Ball(0,0,200); 这将在Ball中调用此构造函数(它扩展了GOval) 我还想初始化颜色,以及设置在这个构造函数中填充的颜色。问题是这些方法是您在对象上调用的。例如,这项工作: Ball ball = new Ball(0,0,200); ball.setFillColor(Color.BLACK)

我创建了一个名为Ball of GOval的子类。我想创建一个黑色的球。为了让它发挥作用,我尝试了以下方法:

在一个类中,我创建了一个新的Ball对象

Ball ball = new Ball(0,0,200);
这将在Ball中调用此构造函数(它扩展了GOval)

我还想初始化颜色,以及设置在这个构造函数中填充的颜色。问题是这些方法是您在对象上调用的。例如,这项工作:

Ball ball = new Ball(0,0,200);
ball.setFillColor(Color.BLACK)
add(playball);
但我真正想要的是在ball类的构建中执行最后两个指令,如下所示:

public Ball(double xPos, double yPos, double diameter){
        super(xPos, yPos, diameter, diameter);
        setFillColor(Color.BLACK);
    }
感谢您的回复:我已使用它:

setFilled(true);
setColor(Color.BLACK);

这可能是因为我用super调用了GOval的构造函数,然后在该对象上调用了这些方法(setFilled和setColor)?

既然
fillColor
是Ball类的一个属性,为什么不能直接设置它而不是调用该方法呢

public Ball(double xPos, double yPos, double diameter){
    super(xPos, yPos, diameter, diameter);
    this.fillColor = Color.BLACK;
}

是的,您可以在构造函数中调用其他方法。

当然可以;这只是一种方法。不过,要小心调用子类方法。在任何情况下,简单地尝试它几乎肯定会更快。这正是构造函数(和初始化块)的意图,因为这不一定是
setFillColor
所做的唯一事情。并不是说是这样,但它可能会绕过适当的封装。fillColor在GOval的构造函数中声明为私有,所以这是不可能的。如果我试图用颜色fillColor在Ball中声明一个实例变量,我不会得到任何错误,但它也不会改变颜色。太糟糕了。然而,我现在让它工作了!
public Ball(double xPos, double yPos, double diameter){
    super(xPos, yPos, diameter, diameter);
    this.fillColor = Color.BLACK;
}