Java 我们可以在该类类型的同一类默认构造函数中创建实例变量吗?

Java 我们可以在该类类型的同一类默认构造函数中创建实例变量吗?,java,netbeans,Java,Netbeans,在下面的HiddenWord类中,我创建了一个通过字符串初始化的实例变量。这是正确的做法吗 另外,当我使用这个对象时,我是否需要一个toString方法来执行此操作 public class HiddenWord{ private String Hword; public HiddenWord(String word){ Hword = new HiddenWord(word); } } 我们可以在该类类型的同一类默认构造函数中创建实例变量吗 这是可能的,但代码中的类型不同。您

在下面的HiddenWord类中,我创建了一个通过字符串初始化的实例变量。这是正确的做法吗

另外,当我使用这个对象时,我是否需要一个toString方法来执行此操作

public class HiddenWord{

private String Hword;

public HiddenWord(String word){


   Hword = new HiddenWord(word);
}

}
我们可以在该类类型的同一类默认构造函数中创建实例变量吗

这是可能的,但代码中的类型不同。您有一个字符串类型变量,并且您的类类型是
HiddenWord

当你这么做的时候

 Hword = new HiddenWord(word); // wrong. 
不,那是错误的。因为字符串不是
HiddenWord

您只需将收到的字符串分配给变量
Hword

 this.Hword =word;
另外,当我使用这个对象时,我是否需要一个toString方法来执行此操作

public class HiddenWord{

private String Hword;

public HiddenWord(String word){


   Hword = new HiddenWord(word);
}

}
这取决于你如何使用它。只是为了展示这门课的内容?对


顺便说一句,java中可变名称以小写开头。

首先:是的,您必须显式调用toString方法以将新创建的HiddenWorld对象作为字符串存储在Hword中

其次,这是一个非常糟糕的主意。在那里调用构造函数将导致递归和StackOverflowerError,因为每次调用构造函数时,它都会再次调用自身,并不断用新方法调用填充堆栈

第三,假设您希望在Hword中存储给定单词,只需执行以下操作:

Hword = word;
额外:
toString方法始终存在于您创建的任何对象中,因为它是在对象类中定义的,该对象类由所有其他类扩展。

如果您在构造函数内调用
new HiddenWord(…)
,它将不起作用。在发布代码之前,您应该始终尝试编译代码;如果您收到任何错误消息,它们将指示您。和
Hword
应拼写为
hiddenWord
Hword
,以符合Java的命名约定。把它拼成一种字体会让人困惑。