在java中创建与class同名的对象

Tam*_*ran 7 c++ java constructor object

在C++中,当我创建如下所示的对象时,则不能为同一个类创建更多对象.

Box Box; //Box is the class Name
Run Code Online (Sandbox Code Playgroud)

这里Box成为一个对象,每当我们Box再次使用时,编译器会将其识别为一个对象.但在java的情况下,这不是.

Box Box = new Box(); 
Box box = new Box(); //valid 
Run Code Online (Sandbox Code Playgroud)

这背后的原因是什么?

Jon*_*eet 7

基本上,Java的语法规则略有不同.当语法说你有一个带有初始化程序的变量声明时,例如:

Box box = new Box();
Run Code Online (Sandbox Code Playgroud)

...它知道Box必须是类型的名称,而不是变量的名称.因此,无论是否Box在范围内调用变量都无关紧要.(这也适用于new运营商.)

我不知道C++语法的详细细节,但听起来它并没有设置为区分,至少在你给出的例子中.这不是它的特征 - 它只是编译器如何查找名称的问题.


5go*_*der 5

Java正在为不同类型的标识符使用不同的名称空间.Java的受限语法使您无论是指类型,函数,变量还是标签都是明确的.