为什么不能将setter放入构造函数中

时间:2013-12-03 10:51:49

标签: java constructor getter-setter

我试图将私有参数的setter放入构造函数中。它们是在创建时初始化的。

但是我从eclipse中得到了一些错误:

Multiple markers at this line
    - Syntax error on token ")", ; expected
    - void is an invalid type for the variable 
     setHealth
    - Syntax error on token "(", ; expected 

以下是代码片段:

public abstract class Droid {
    private int health;
    private int power;
    private int impact;

    public Droid() {

        public void setHealth(int health) {
            this.health = health;
        }

        public void setPower(int power) {
            this.power = power;
        }

        public void setImpact(int impact) {
            this.impact = impact;
        }
    }

    // getters and other methods goes here
}

为什么它不起作用?任何建议。

这是更好看的屏幕:

setters-into-constructor

  • 如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您根本无法在方法声明中提供方法声明。

我建议你阅读一些基本 java教程。

答案 1 :(得分:1)

Java不允许直接定义方法内的方法。

在这里阅读更多内容:

Methods inside methods

Does Java support inner / local / sub methods?

答案 2 :(得分:1)

您正在尝试在构造函数中创建set方法,您应该在外部创建它们,然后在构造函数中调用它们。喜欢这个:

public abstract class Droid {
    private int health;
    private int power;
    private int impact;
public Droid(int health,int power,int impact) {
    setHealth(health);
    setPower(power);
    setImpact(impact);

}

// getters and other methods goes here

public void setHealth(int health) {
        this.health = health;
    }

    public void setPower(int power) {
        this.power = power;
    }

    public void setImpact(int impact) {
        this.impact = impact;
    }

}

在大多数情况下,构造函数的编写方式如下:

    public Droid(int health,int power,int impact) {
        this.health=health;
        this.power=power;
        this.impact=impact;

    }

因为从类中调用setter方法不是必需的。当您想要从不同的类更改字段时,将使用Setter方法。