我遇到的问题是,虽然我相信我已经在构造函数中正确地设置了所有内容,但当我尝试调用新的Letter
示例fromto
的示例变量from
时,我似乎一直收到一个错误消息,说编译器找不到变量fromto
。
public class Letter {
private String from; // Sets from instance variable to be stored
private String to; /// Sets to instance vaariable to be stored
public Letter(String from, String to) {
this.from = from;
this.to = to;
}
public Letter() {
Letter fromto = new Letter("Dylan", "April");
}
public static void main(String[] args) {
System.out.println("Dear " + fromto.from);
}
}
4条答案
按热度按时间omhiaaxx1#
首先,您可能应该学习更多关于Java中变量作用域的知识(阅读Sun's tutorials about Object-oriented Java-programming可能是个好主意)。
这里的问题是变量
fromto
是在构造函数中声明的,因此只能从构造函数的作用域中获得。相反,请删除该构造函数(除非您真的想保留它,在这种情况下,您应该确保正确初始化from
和to
变量)并将变量移动到main
函数中。0s7z1bwu2#
你需要先创建一个Letter类的新示例,然后才能调用该示例/对象上的字段和getter/setter方法。
请注意,只有main在同一个类中定义时,对private字段的调用才会成功,因此创建的
myLetter
提供了对该字段的访问。在实践中,您可以定义公共setter和getter来访问private字段。
wfypjpf43#
你需要在正确的作用域中示例化你的
Letter
。如果你只需要在main方法中使用它,那么创建示例的最佳位置就是在方法块的开头:关于no-args构造函数,如果示例变量
from
和to
是可选的,那么声明一个构造函数是一个很好的实践,这样你也可以用语法new Letter()
示例化letter。如果你不声明任何构造函数,编译器默认提供一个空构造函数。实际上,只要有可能,遵循JavaBeans约定是一件好事。引用Wikipedia:
lsmd5eda4#
移除
然后: