![]() |
1
5
因为您正在访问类实例上的方法。顺便说一句,实例的名称与类名相同,但是由于没有具有此名称的静态方法,编译器假定是正确的,即实例方法。
如果你把方法定义为
最终,你不能同时拥有
|
![]() |
2
3
这个 JLS 讨论并定义此类情况范围规则的优先级:
还有其他边界案例,其中变量可以是 阴影的 或 隐藏 . 例子:
同样,编译器遵循jls并根据规范解析名称。编译器不是智能的,不会“发现”任何东西,它只是遵循规范。 |
![]() |
3
2
你的问题是关于print()方法吗?它之所以起作用是因为变量名“隐藏”了类型名,所以当您执行b.print()操作时,它会查看变量b,这是类b的一个实例。 您真的不应该将变量调用为与类相同的名称,至少不应该使用相同的大小写。如果将变量重命名,即使只是将其重命名为“b”,情况也会更清楚。所以:
|
![]() |
4
0
因为在那个例子中,
然后
实例的名称与类的名称相同也无关紧要。自从
|
![]() |
5
0
我想类名和实例变量不共享同一个名称空间;对于编译器来说,很明显
无需说这令人困惑,应该在真正的代码中避免;) |
|
user29759326 · 如何返回递归函数中的最后一个值? 3 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 3 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 3 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |