我正在阅读我的Deitel,Java How to Program一书,并且遇到了阴影这个词.如果允许阴影,Java类中的情况或用途是什么?
例:
public class Foo {
int x = 5;
public void useField() {
System.out.println(this.x);
}
public void useLocal() {
int x = 10;
System.out.println(x);
}
}
Run Code Online (Sandbox Code Playgroud)
Yis*_*hai 36
阴影的基本目的是将本地代码与周围的类分离.如果没有,请考虑以下情况.
API中的Class Foo已发布.在您的代码中,您将其子类化,并在子类中使用名为bar的变量.然后Foo发布更新并将一个名为Bar的受保护变量添加到其类中.
现在,由于您无法预料到的冲突,您的课程将无法运行.
但是,不要故意这样做.只有当你真的不关心范围之外发生的事情时才会发生这种情况.
Tom*_*rys 13
它对于您不希望仅为方法参数创建单独的变量名称的setter非常有用,例如:
public void setX(int x) {
this.x = x;
}
Run Code Online (Sandbox Code Playgroud)
除此之外,我会避免它们.
z *_* - 5
阴影不是真正的java术语.在范围中声明的变量与更大范围中的变量具有相同名称的任何实例中,该变量都是阴影.
阴影的一些常见用途是当你有内部类和外部类并且想要维护具有相同名称的变量时.
如果你可以避免它,你应该因为它可能会引起混淆.
| 归档时间: |
|
| 查看次数: |
30694 次 |
| 最近记录: |