我是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;
}
但改变后它不起作用。任何人都可以告诉我这可能是什么原因?
答案 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
。