Dav*_*vid 7 java constructor class
我正在读一本关于java的书.它只是解释了如何创建一个名为"deck"的类,其中包含一组卡作为其实例变量.这是代码snippit:
class Deck {
Card[] cards;
public Deck (int n) {
cards = new Card[n];
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不使用this.命令?
例如,为什么不是这个代码:
class Deck {
Card[] cards;
public Deck (int n) {
this.cards = new Card[n];
}
}
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 20
因为没有歧义.只有一个cards变量.this如果有两个 - 其中一个是实例变量(类的一部分,当前是),另一个 - 构造函数的参数,则需要它.
顺便说this一下,这不是一个"命令".这是一个"关键字".
Ran*_*pho 12
this. 是隐含的.
一般来说,最好的做法(至少我认为是一个)只this在绝对必要时使用.例如,当你有一个名为的局部变量cards和一个名为的成员变量时cards,你需要this.cards引用成员变量,作为cards局部变量的引用.
在这种情况下,这this是一个好主意(尽管重命名成员变量可能是个更好的主意).
在其他情况下,隐式this可以工作,使用它.
您无需使用this关键字限定对成员的所有访问权限.只要另一个变量隐藏了成员方法,您就只需要使用它.
这不是一个仅限于构造函数的功能,但在所有方法中都可用:
public class Test
{
private int member;
private int value;
public Test(int value) {
member = 5;
this.value = value; // required to differentiate from the parameter
}
public void f( int member ) {
int value = 5
this.member = value; // assign local 'value' (5) to member 'member'
this.value = member; // assign parameter 'member' to member 'value'
}
}
Run Code Online (Sandbox Code Playgroud)