写getter和setter的不同方法?

时间:2015-02-12 21:25:08

标签: java

我已经看过使用this的访问方法和不使用的访问方法。他们会产生相同的结果吗?

例如:

public setName(string name){
    this.name=name;
}

public setName(string n){
    name=n;
}

public void getName{
    return name;
}

public void getName{
    // is "this" here useless?
    return this.name;
}

有什么区别?哪种方式更好?

3 个答案:

答案 0 :(得分:1)

如果要引用与方法中的局部变量同名的类级别变量,则需要使用this。只有在变量具有相同名称时才需要它。如果您愿意,总是可以使用this,但这不是必需的。和

之间的区别
this.s = s;

s = myString;

只是一种风格偏好,而不是一场重大的战争争夺战。

答案 1 :(得分:0)

是的,它们在功能和结果字节码(afaik)方面完全等效。

'this'关键字仅在引用实例变量(使用类或相关超类定义的非静态变量)时使用,以便将其与同名的局部变量区分开来。在这种情况下省略'this'关键字会将局部变量分配给自身。

关于什么是更好的编辑,有些人不喜欢命名变量相同,但有些人喜欢使用'this'来显式引用实例变量。它归结为品味和可读性。

答案 2 :(得分:0)

它是一样的。 如果你的方法有一个与类字段名称相同的变量(例如“name”),你需要写“this.name”来引用类字段,因为只写“name”你引用的是方法变量。

所以在你写的第二个例子中,你有两个不同的名字(“name”和“n”),你不需要写“this.name”。 顺便说一句,在第二个例子中,如果你愿意,你可以自由地说“this.name”,但它不是强制性的......(在我看来它不是强制性的,但它是一个很好的方法来制作你的代码更容易阅读)。

最后选择您喜欢的方法。 在我看来,第一个是编写代码的更“优雅”的方式。