使用this調(diào)用本類中的屬性
現(xiàn)在觀察以下代碼,看會(huì)有那些問(wèn)題:
public void setName(String name){
name = name ;
}
這里面的兩個(gè)name都是setName方法中的name參數(shù).
此時(shí),特別希望可以通過(guò)一個(gè)指定的標(biāo)識(shí)明確的表示要把傳入的name參數(shù)的值給類中的屬性,所以此時(shí)就需要使用this關(guān)鍵字,使用this.name就表示類中的屬性.
class Person{
private String name ;
private int age ;
public Person(String name,int age){
this.setName(name) ;
this.setAge(age) ;
}
public void setName(String name){
this.name = name ;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
public void print(){
System.out.println("姓名:"+this.name+",年齡:"+this.age) ;
}
};
public class Demo35{
public static void main(String args[]){
Person p1 = new Person("張三",30) ;
p1.print() ;
}
};
使用this還可以從一個(gè)構(gòu)造方法中調(diào)用其他構(gòu)造方法.
例如:有以下一個(gè)要求,一個(gè)類中存在了三個(gè)構(gòu)造方法,但是要求,不管怎么調(diào)用,最終都要求可以在對(duì)象實(shí)例化的時(shí)候打印一個(gè)“新的對(duì)象產(chǎn)生了”的提示.
class Person{
private String name ;
private int age ;
public Person(){
System.out.println("新的對(duì)象產(chǎn)生了.") ;
}
public Person(String name){
System.out.println("新的對(duì)象產(chǎn)生了.") ;
this.setName(name) ;
}
public Person(String name,int age){
System.out.println("新的對(duì)象產(chǎn)生了.") ;
this.setName(name) ;
this.setAge(age) ;
}
public void setName(String name){
this.name = name ;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
public void print(){
System.out.println("姓名:"+this.name+",年齡:"+this.age) ;
}
};
以上代碼雖然可以實(shí)現(xiàn)功能,但是同樣的代碼出現(xiàn)了三次,而且后面的兩次出現(xiàn)純屬多余吧.用this()的形式可以調(diào)用類中的無(wú)參構(gòu)造方法.
class Person{
private String name ;
private int age ;
public Person(){
System.out.println("新的對(duì)象產(chǎn)生了.") ;
}
public Person(String name){
// 最終都是調(diào)用無(wú)參構(gòu)造方法
this() ;
this.setName(name) ;
}
public Person(String name,int age){
this(name) ;
this.setAge(age) ;
}
public void setName(String name){
this.name = name ;
}
public void setAge(int age){
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
public void print(){
System.out.println("姓名:"+this.name+",年齡:"+this.age) ;
}
};
public class Demo36{
public static void main(String args[]){
Person p1 = new Person("張三",30) ;
p1.print() ;
}
};
注意點(diǎn)1:
如果使用了this調(diào)用其他構(gòu)造方法,則此語(yǔ)句,必須寫在構(gòu)造方法的首行.
public void fun(){
// 發(fā)現(xiàn)在調(diào)用fun方法的時(shí)候,必須先設(shè)置name的值
this("zhangsan") ;
}
public Person(String name,int age){
this.setAge(age) ;
this(name) ; //--> 必須放在首行
}
注意點(diǎn)2:
使用this可以調(diào)用本類中的其他構(gòu)造方法,但是至少留一個(gè)構(gòu)造方法,作為程序的出口.
public Person(){
this("a",10) ;
System.out.println("新的對(duì)象產(chǎn)生了.") ;
}
public Person(String name){
// 最終都是調(diào)用無(wú)參構(gòu)造方法
this() ;
this.setName(name) ;
}
public Person(String name,int age){
this(name) ; //--> 必須放在首行
this.setAge(age) ;
}
this最重要的特性 —— 表示當(dāng)前對(duì)象
當(dāng)前對(duì)象在程序中用以下形式體現(xiàn):
· 當(dāng)前操作此方法的對(duì)象,就稱為當(dāng)前對(duì)象.
class Demo{
public void print(){
System.out.println(this) ;
}
};
public class Demo38{
public static void main(String args[]){
Demo d1 = new Demo() ;
System.out.println(d1) ;
d1.print() ;
System.out.println("---------------------") ;
Demo d2 = new Demo() ;
System.out.println(d2) ;
d2.print() ;
}
};
回顧:
之前講解的兩個(gè)對(duì)象比較的程序.
// 在類的內(nèi)部增加一個(gè)比較的方法
public boolean compare(Person p){
Person p1 = this ;
Person p2 = p ;
if(p1.name.equals(p2.name)&&p1.age==p2.age){
return true ;
}else{
return false ;
}
}
分析程序的運(yùn)行過(guò)程:
class A{
private B b = null ;
public A(){
this.b = new B(this) ;
this.b.fun() ;
}
public void hello(){
System.out.println("Hello World!") ;
}
};
class B{
private A a = null ;
public B(A a){
this.a = a ;
}
public void fun(){
this.a.hello() ;
}
};
public class OODemo40{
public static void main(String args[]){
A aa = new A() ;
}
};
java中this的作用及用法?在什么情況下需要用this
java中this的作用及用法?在什么情況下需要用this
其他人氣:708 ℃時(shí)間:2020-05-01 07:47:58
優(yōu)質(zhì)解答
我來(lái)回答
類似推薦
- It was four days ago____ the man was put into prison again.
- 完全失重的時(shí)候?yàn)槭裁此纬山^對(duì)球形
- 高中數(shù)學(xué)排列組合公式Cnm(n為下標(biāo),m為上標(biāo))=n!/m!(n-m)!是怎么來(lái)的
- 一個(gè)直角三角形的三邊長(zhǎng)為連續(xù)偶數(shù),則它各邊長(zhǎng)為?勾股定理怎么算出來(lái)的啊?
- 我很在乎你 用英文怎么寫
- +500度和-400度的眼鏡片,哪個(gè)是近視鏡片它的焦度是多少,焦距是多少
- 已知a
- 唐詩(shī)“欲窮千里目,更上一層樓”的意思
- Weather________,I will go mountain climbing.
- 兩段電阻絲的電阻之比是3:2,通過(guò)它們的電流之比是1:4,如果使它們產(chǎn)生相同的熱量,通電時(shí)間之比是——
- 虛無(wú)主義通俗點(diǎn)說(shuō)是什么?
- 如果一個(gè)多邊形內(nèi)角和等于它外角和的兩倍,那么這個(gè)多邊形是( ?。?A.五邊形 B.六邊形 C.七邊形 D.八邊形
猜你喜歡
- 1sin(π-θ)+cos(2π-θ)/cos(5π/2-θ)+sin(3π/2+θ)=2,則sinθcosθ=______
- 2一到四年級(jí)的古詩(shī)
- 3南宋時(shí)兩大詞人被譽(yù)為“蘇辛”,“蘇”指的是蘇軾,那“辛”指的是哪位豪放派詞人?
- 4數(shù)學(xué)題,誰(shuí)來(lái)幫幫我呀!O(∩_∩)O謝謝!要過(guò)程.000
- 5Although laughter ___ the room ,she feilt lonely.
- 6我們腳下的這塊土地也是一本有趣的書(shū)(縮句)
- 7形容路途遙遠(yuǎn).——寫一成語(yǔ)
- 8趣味語(yǔ)文小故事
- 9比喻琴聲優(yōu)美動(dòng)聽(tīng)的句子
- 10什么叫“四不像”?
- 11怎樣配置火堿消毒液,
- 12求 大工12春《高等數(shù)學(xué)》(上)在線作業(yè)2