Given:
public class Access {
private int x = 0;
private int y = 0;
public static void main(String[] args) {
Access accApp = new Access();
accApp.printThis(1, 2);
accApp.printThat(3, 4);
}
public void printThis(int x, int y) {
x = x;
y = y;
System.out.println("x:" + this.x + " y:" + this.y);
}
public void printThat(int x, int y) {
this.x = x;
this.y = y;
System.out.println("x:" + this.x + " y:" + this.y);
}
}
What is the result?
A.
x:1 y:2
x:3 y:4
x:3 y:4
B.
x:0 y:0
x:3 y:4
x:3 y:4
C.
x:1 y:2
x:0 y:0
x:0 y:0
D.
x:0 y:0
x:0 y:0
x:0 y:0
題解
第13、14行,printThis方法的x、y參數會遮蔽Access類別的x、y物件欄位,所以Access物件欄位的值並不會被修改到,維持原來的x=0、y=0。
第19、20行,printThat方法的x、y參數會遮蔽Access類別的x、y物件欄位,但在這裡使用了「this」來表示目前Access物件的參考,所以可以存取到Access物件欄位,欄位的值會成功被修改,變成x=3、y=4。