2007-01-04 | java中this&super的用法[转]
上一篇 / 下一篇 2007-04-27 17:54:08 / 个人分类:编程基础
在一般方法中
9Z9\;{@"p2c0:n L,f"q^8i9x!t0 最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法:51Testing软件测试网FNHqu6L,Qb
51Testing软件测试网s#F9Yv7Y h&N/upublic class DemoThis{51Testing软件测试网l|^v!k9n
Jto$Q
private String name;
0|AJFK1K%l|1Q.Z+S0 private int age;
:gap2_K L0 DemoThis(String name,int age){
B'f X$Iq PVZ!v0 setName(name); //你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的
"ni
sl{^#v0 setAge(age);51Testing软件测试网`4E6|1s;e
H_*b} @1q
this.print();51Testing软件测试网L*Lg%@!Z){@
kj
}
q7_\j)ve0 public void setName(String name){51Testing软件测试网3XJ%juJGg
this.name=name;//此处必须指明你要引用成员变量51Testing软件测试网 rn+m6~0EE*O5[
}
2C5bj|.k5u]0 public void setAge(int age){51Testing软件测试网
IjX9q:}#t5U{
this.age=age;
"b
c
oJl%H0 }51Testing软件测试网6N|BP/NHF*Dt sJ
public void print(){
;NA"s$M s)jh!nq{F0 System.out.println("Name="+name+" Age="+age);//在此行中并不需要用this,因为没有会导致混淆的东西51Testing软件测试网
OQ {}9[1v
}51Testing软件测试网L/nz_W"j
public static void main(String[] args){51Testing软件测试网\t$cFN%D
DemoThis dt=new DemoThis("Kevin","22");
2N7T)p-} f7oX0 }51Testing软件测试网.[j~|-Xm
}51Testing软件测试网,`3M [jul"?n
i:^4lZR%xV0 这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(),你完全可以用print()来代替它,两者效果一样。下面我们修改这个程序,来演示super的用法。
b!b Xt+r8Z)P$u{051Testing软件测试网v!S0wpe-Fclass Person{
;{S6D-ZxAt0 public int c;51Testing软件测试网3`kAqD
`
private String name;51Testing软件测试网QEf7lVWP7D
private int age;51Testing软件测试网RDk\:]:A,t HC2G3{
protected void setName(String name){
1j"TNUC1Ga7|Y0 this.name=name;
GC t9sR2{0 }51Testing软件测试网4O~F'p)MnK4Ux
protected void setAge(int age){51Testing软件测试网!q-CYCh;h
H~;Vq
this.age=age;51Testing软件测试网Yz
e9U)M(K9r0? V
}
ioi@Mntz}v {0 protected void print(){
_&^&RX `q0 System.out.println("Name="+name+" Age="+age);51Testing软件测试网9p
d+_#zlKP
}