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

我正在读我的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);
    }}


蝴蝶不菲
浏览 484回答 3
3回答

开满天机

隐藏的基本目的是将本地代码与周围的类解耦。如果它不可用,那么考虑下面的情况。API中的类foo将被发布。在您的代码中,您将它子类化,并且在您的子类中使用一个名为bar的变量。然后foo发布一个更新,并将一个名为Bar的受保护变量添加到它的类中。现在你的课不会跑,因为你无法预料的冲突。但是,不要故意这样做。只有当你真的不关心发生在范围之外的事情时,才让它发生。

慕村225694

对于不想只为方法参数创建单独的变量名的setter来说,它可能是有用的,例如:public void setX(int x) {     this.x = x;}除此之外,我会避开他们。

qq_笑_17

两个常见的用途是构造函数和SET方法:public&nbsp;Foo(int&nbsp;x)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;this.x&nbsp;=&nbsp;x;}public&nbsp;void&nbsp;setX(int&nbsp;x)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;this.x&nbsp;=&nbsp;x;}有时候,如果您想要在一个瞬间复制变量,那么它是有用的,但是变量可能在方法调用中发生变化。private&nbsp;void&nbsp;fire()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Listener[]&nbsp;listeners&nbsp;=&nbsp;this.listeners; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;num&nbsp;=&nbsp;listeners.length; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;ct=0;&nbsp;ct<num;&nbsp;++ct)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listeners[ct].stateChanged(); &nbsp;&nbsp;&nbsp;&nbsp;}}(当然,在高级for循环中没有必要使用一个人为的示例。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java