为了账号安全,请及时绑定邮箱和手机立即绑定

Java类中使用的变量阴影是什么?

Java类中使用的变量阴影是什么?

蝴蝶不菲 2019-07-13 15:42:27
我正在读我的Deitel,Java如何编程的书,我读到了这个词遮蔽..如果允许跟踪,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);     }}
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

隐藏的基本目的是将本地代码与周围的类解耦。如果它不可用,那么考虑下面的情况。

API中的类foo将被发布。在您的代码中,您将它子类化,并且在您的子类中使用一个名为bar的变量。然后foo发布一个更新,并将一个名为Bar的受保护变量添加到它的类中。

现在你的课不会跑,因为你无法预料的冲突。

但是,不要故意这样做。只有当你真的不关心发生在范围之外的事情时,才让它发生。


查看完整回答
反对 回复 2019-07-13
?
慕村225694

TA贡献1880条经验 获得超4个赞

对于不想只为方法参数创建单独的变量名的setter来说,它可能是有用的,例如:

public void setX(int x) {
    this.x = x;}

除此之外,我会避开他们。


查看完整回答
反对 回复 2019-07-13
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

两个常见的用途是构造函数和SET方法:

public Foo(int x) {
    this.x = x;}public void setX(int x) {
    this.x = x;}

有时候,如果您想要在一个瞬间复制变量,那么它是有用的,但是变量可能在方法调用中发生变化。

private void fire() {
    Listener[] listeners = this.listeners;
    int num = listeners.length;
    for (int ct=0; ct<num; ++ct) {
        listeners[ct].stateChanged();
    }}

(当然,在高级for循环中没有必要使用一个人为的示例。)


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 483 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号