目錄
1.1 this是什么?
1.2 什么時(shí)候使用this
1.2.1 實(shí)例方法或構(gòu)造器中使用當(dāng)前對(duì)象的成員
舉例1:
舉例2:
測(cè)試類(lèi):
1.2.2 同一個(gè)類(lèi)中構(gòu)造器互相調(diào)用
注意:
1.3 練習(xí)
**練習(xí)1:**
練習(xí)2:
1.1 this是什么?
-
在Java中,this關(guān)鍵字不算難理解,它的作用和其詞義很接近。
- 它在方法(準(zhǔn)確的說(shuō)是實(shí)例方法或非static的方法)內(nèi)部使用,表示調(diào)用該方法的對(duì)象
- 它在構(gòu)造器內(nèi)部使用,表示該構(gòu)造器正在初始化的對(duì)象。
-
this可以調(diào)用的結(jié)構(gòu):成員變量、方法和構(gòu)造器
1.2 什么時(shí)候使用this
1.2.1 實(shí)例方法或構(gòu)造器中使用當(dāng)前對(duì)象的成員
在實(shí)例方法或構(gòu)造器中,如果使用當(dāng)前類(lèi)的成員變量或成員方法可以在其前面添加this,增強(qiáng)程序的可讀性。不過(guò),通常我們都習(xí)慣省略this。
但是,當(dāng)形參與成員變量同名時(shí),如果在方法內(nèi)或構(gòu)造器內(nèi)需要使用成員變量,必須添加this來(lái)表明該變量是類(lèi)的成員變量。即:我們可以用this來(lái)區(qū)分成員變量
和局部變量
。比如:
另外,使用this訪(fǎng)問(wèn)屬性和方法時(shí),如果在本類(lèi)中未找到,會(huì)從父類(lèi)中查找。這個(gè)在繼承中會(huì)講到。
舉例1:
class Person{ // 定義Person類(lèi)
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void getInfo(){
System.out.println("姓名:" + name) ;
this.speak();
}
public void speak(){
System.out.println(“年齡:” + this.age);
}
}
舉例2:
public class Rectangle {
int length;
int width;
public int area() {
return this.length * this.width;
}
public int perimeter(){
return 2 * (this.length + this.width);
}
public void print(char sign) {
for (int i = 1; i <= this.width; i++) {
for (int j = 1; j <= this.length; j++) {
System.out.print(sign);
}
System.out.println();
}
}
public String getInfo(){
return "長(zhǎng):" + this.length + ",寬:" + this.width +",面積:" + this.area() +",周長(zhǎng):" + this.perimeter();
}
}
測(cè)試類(lèi):
public class TestRectangle {
public static void main(String[] args) {
Rectangle r1 = new Rectangle();
Rectangle r2 = new Rectangle();
System.out.println("r1對(duì)象:" + r1.getInfo());
System.out.println("r2對(duì)象:" + r2.getInfo());
r1.length = 10;
r1.width = 2;
System.out.println("r1對(duì)象:" + r1.getInfo());
System.out.println("r2對(duì)象:" + r2.getInfo());
r1.print('#');
System.out.println("---------------------");
r1.print('&');
System.out.println("---------------------");
r2.print('#');
System.out.println("---------------------");
r2.print('%');
}
}
1.2.2 同一個(gè)類(lèi)中構(gòu)造器互相調(diào)用
this可以作為一個(gè)類(lèi)中構(gòu)造器相互調(diào)用的特殊格式。
- this():調(diào)用本類(lèi)的無(wú)參構(gòu)造器
- this(實(shí)參列表):調(diào)用本類(lèi)的有參構(gòu)造器
public class Student {
private String name;
private int age;
// 無(wú)參構(gòu)造
public Student() {
// this("",18);//調(diào)用本類(lèi)有參構(gòu)造器
}
// 有參構(gòu)造
public Student(String name) {
this();//調(diào)用本類(lèi)無(wú)參構(gòu)造器
this.name = name;
}
// 有參構(gòu)造
public Student(String name,int age){
this(name);//調(diào)用本類(lèi)中有一個(gè)String參數(shù)的構(gòu)造器
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getInfo(){
return "姓名:" + name +",年齡:" + age;
}
}
注意:
- 不能出現(xiàn)遞歸調(diào)用。比如,調(diào)用自身構(gòu)造器。
- 推論:如果一個(gè)類(lèi)中聲明了n個(gè)構(gòu)造器,則最多有 n - 1個(gè)構(gòu)造器中使用了"this(形參列表)"
- this()和this(實(shí)參列表)只能聲明在構(gòu)造器首行。
- 推論:在類(lèi)的一個(gè)構(gòu)造器中,最多只能聲明一個(gè)"this(參數(shù)列表)"
1.3 練習(xí)
**練習(xí)1:**
添加必要的構(gòu)造器,綜合應(yīng)用構(gòu)造器的重載,this關(guān)鍵字。
練習(xí)2:
(1)按照如下的UML類(lèi)圖,創(chuàng)建相應(yīng)的類(lèi),提供必要的結(jié)構(gòu):
在提款方法withdraw()中,需要判斷用戶(hù)余額是否能夠滿(mǎn)足提款數(shù)額的要求,如果不能,應(yīng)給出提示。deposit()方法表示存款。
(2)按照如下的UML類(lèi)圖,創(chuàng)建相應(yīng)的類(lèi),提供必要的結(jié)構(gòu)
(3)按照如下的UML類(lèi)圖,創(chuàng)建相應(yīng)的類(lèi),提供必要的結(jié)構(gòu)
-
addCustomer 方法必須依照參數(shù)(姓,名)構(gòu)造一個(gè)新的 Customer對(duì)象,然后把它放到 customer 數(shù)組中。還必須把 numberOfCustomer 屬性的值加 1。
-
getNumOfCustomers 方法返回 numberofCustomers 屬性值。
-
getCustomer方法返回與給出的index參數(shù)相關(guān)的客戶(hù)。
(4)創(chuàng)建BankTest類(lèi),進(jìn)行測(cè)試。
內(nèi)存解析圖:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-411924.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-411924.html
到了這里,關(guān)于面向?qū)ο缶幊蹋ㄟM(jìn)階)1:關(guān)鍵字:this的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!