构造函数和字符串第2部分示例

时间:2013-10-13 23:38:20

标签: java

我遇到的问题是,当我尝试调用新from实例的实例变量Letter时,我相信我已经在构造函数中正确设置了所有内容{1}}我似乎不断收到错误,说编译器无法找到变量fromto。目标是让fromto显示在文本中。

Dylan

4 个答案:

答案 0 :(得分:6)

首先,您应该了解有关Java中变量范围的更多信息。 (阅读Sun's tutorials about Object-oriented Java-programming可能是一个好主意)

这里的问题是变量fromto在构造函数中声明,因此仅在构造函数的范围内可用。相反,摆脱那个构造函数(除非你真的想保留它,在这种情况下你应该确保正确地初始化你的fromto变量)并将变量移动到你的{{1}功能。

main

答案 1 :(得分:3)

您需要在正确的范围内实例化Letter。如果你只需要在main方法中使用它,那么创建实例的最佳位置就在方法块的开头:

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() {
    }

    public static void main(String[] args) {
       Letter fromto = new Letter("Dylan", "April");
       System.out.println("Dear " + fromto.from);
    }

}

关于no-args构造函数,如果实例变量fromto是可选的,则声明一个是一个好习惯,这样您也可以使用语法{{1}来实例化字母}。如果未声明任何构造函数,则编译器默认提供空构造函数。

实际上,只要有可能,遵循JavaBeans约定是一件好事。引用Wikipedia

  
      
  • 该类必须具有公共默认构造函数(无参数)。这个   允许在编辑和激活框架中轻松实例化。
  •   
  • 必须使用get,set,is(可用于)来访问类属性   布尔属性而不是get)和其他方法(所谓的   访问方法和mutator方法),遵循标准命名   惯例。这样可以轻松自动检查和更新bean   框架内的状态,其中许多包括自定义编辑器   各种类型的属性。塞特斯必须只收到一个论点。
  •   
  • 该类应该是可序列化的。它允许应用程序和   用于在a中可靠地保存,存储和恢复bean状态的框架   时尚独立于VM和平台。
  •   

答案 2 :(得分:3)

您需要首先创建Letter类的新实例,然后才能在该实例/对象上调用字段和getter / setter-methods。

public static void main(String[] args)
{
    Letter myLetter = new Letter();
    System.out.println(myLetter.from);
}

请注意,您的私有字段上的调用仅在成功时才会在同一个类中定义,因此创建的myLetter可以访问该字段。

在实践中,您将定义公共setter和getter来访问私有字段。

答案 3 :(得分:0)

删除

 public Letter(){

  Letter fromto= new Letter("Dylan", "April");

 }

然后:

public static void main(String[] args){
Letter fromto= new Letter("Dylan", "April");
  System.out.println("Dear " + fromto.from);

  }