实现构造函数的方法

时间:2015-04-16 01:33:44

标签: java constructor

我是java的新手,掌握了基础知识,但是下面的代码让我对构造函数的概念感到困惑,即它看起来与我研究的不同(我不确定,我是' m初学者在这里)..有人可以向我解释一下。

代码我得到了:

    public void Msg(String from, String to, String subject) {
        setFrom(from);
        setTo(to);
        setSubject(subject);
    }

如果我将其更改为以下代码,我认为它会起作用:

    public void Msg(String from, String to, String subject) {
        setFrom = from;
        setTo = to;
        setSubject = subject;
    }

但改变后它不起作用。任何人都可以告诉我这可能是什么原因?

2 个答案:

答案 0 :(得分:1)

SetFrom是一种方法而不是变量。如果你想像你那样使用你的构造函数,你将需要类似下面的东西。

private String from;
private String to;
private String subject;

public Msg(String from, String to, String subject) {
    this.from = from;
    this.to = to;
    this.subject = subject;
}

public String getFrom() {
    return this.from;
}

public void setFrom(String from) {
    this.from = from;
}

答案 1 :(得分:1)

添加到@Lachlan Goodhew-Cook,这非常精确,您也可以在构造函数中调用方法,例如:在setter中添加一些数据验证时,例如:

    private String from;
    private String to;
    private String subject;

    public Msg(String from, String to, String subject) {

        // This is a call to your method defined below, passing the constructor
        // parameter (from) as an argument to setFrom()
        setFrom(from);

        // These access your data fields (instance variables) straight ahead
        // Need "this" keyword because constructor parameters have same name of data
        // fields (attributes) identifiers. "this" refers to your instance variables
        // being assigned the values passed as arguments to your constructor
        this.to = to;
        this.subject = subject;
    }

    public String getFrom() {

        // Don't need "this" keyword
        return from;
    }

    public void setFrom(String newFrom) {
        if (/*newFrom is valid input*/) {

            // Don't need "this" keyword
            from = newFrom;
        }
    }

这只是一个示例,表明您可以在构造函数中调用方法,作为一种可能性。

顺便说一句,当您的方法/构造函数参数与实例变量具有相同的名称(标识符)时,您只需要使用关键字this