教科书声明可以使用年龄=年龄而不是this.age =年龄在ctor,这是正确的吗?

时间:2013-03-11 14:11:34

标签: java

对于这门课程,

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

在我的教科书中,作者告诉我,写年龄=年龄也可以替换this.age = age。

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

我的计算机上安装了jdk1.7,而age = age等代码没有效果。哪个版本的Java有用呢?

3 个答案:

答案 0 :(得分:4)

这本书出了问题,应予以更换。使用不同的书。 age = age永远不会产生任何影响,并希望产生编译器警告。

答案 1 :(得分:4)

  

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

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

请提供您发现此声明的图书的名称和作者。

答案 2 :(得分:3)

我从未见过这个。至少我确信Java 1.4在这方面与1.7相同。

坚持使用:

this.age = age;

也许教科书引用了这种情况,因为这样可行。由于没有本地变量age,因此会将customAge分配给类字段age

class Person {
    int age;
    public Person(int customAge) {
        age = customAge;
    }
}