3

对于这堂课,

class Person {
    int age;
    public Person(int age) {
        this.age = age;
    }
}

在我的课本中,作者告诉我写age=age来代替this.age=age也是可以的。

他说,如果参数和数据成员同名,赋值符号的左侧将被视为类的数据成员,右侧是参数。

我的电脑上安装了jdk1.7,age=age之类的代码没有效果。这在哪个版本的 Java 中有效?

4

3 回答 3

4

这本书完全错了,应该更换。使用不同的书。 age = age永远不会有任何影响,并希望产生编译器警告。

于 2013-03-11T14:14:07.687 回答
4

他说,如果参数和数据成员同名,赋值符号的左侧将被视为类的数据成员,右侧是参数。

这在 Sun / Oracle 发布的任何 Java 版本或符合 Java 语言规范的任何版本的任何语言中均无效。

请提供您在其中找到此声明的图书的名称和作者。

于 2013-03-11T14:15:14.470 回答
3

我从来没有见过这个。至少我确定 Java 1.4 在这方面与 1.7 一样。

坚持使用:

this.age = age;

也许教科书提到了这种情况,因为这会起作用。由于没有局部变量age,它将分配customAge给类字段age

class Person {
    int age;
    public Person(int customAge) {
        age = customAge;
    }
}
于 2013-03-11T14:14:14.940 回答