构造函数的实现方式
ways of implementing constructor
我是 java 的新手,掌握了基础知识,但是下面的代码让我对构造函数的概念感到困惑,即它似乎与我学习的不同(我不确定,我是这里是初学者...所以有人可以向我解释一下吗。
我得到的代码:
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;
}
但是改了之后就不行了。谁能告诉我这背后的原因是什么?
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;
}
加上@Lachlan Goodhew-Cook,非常精确,您还可以在构造函数中调用方法,例如在您的设置器中添加一些数据验证时:
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;
}
}
这只是一个示例,旨在说明您可以在构造函数中调用方法。
顺便说一句,当您的 method/constructor 参数与您的实例变量具有相同的名称(标识符)时,您只需要使用关键字 this
。
我是 java 的新手,掌握了基础知识,但是下面的代码让我对构造函数的概念感到困惑,即它似乎与我学习的不同(我不确定,我是这里是初学者...所以有人可以向我解释一下吗。
我得到的代码:
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;
}
但是改了之后就不行了。谁能告诉我这背后的原因是什么?
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;
}
加上@Lachlan Goodhew-Cook,非常精确,您还可以在构造函数中调用方法,例如在您的设置器中添加一些数据验证时:
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;
}
}
这只是一个示例,旨在说明您可以在构造函数中调用方法。
顺便说一句,当您的 method/constructor 参数与您的实例变量具有相同的名称(标识符)时,您只需要使用关键字 this
。