日照網(wǎng)站建設(shè)價格蘇貨運公司回收百度賬戶推廣登陸
目錄
一、this關(guān)鍵字的基本理解
二、this調(diào)用屬性和方法
(一)一般情況
(二)特殊情況
三、this調(diào)用構(gòu)造器
四、案例分析
(一)Account類
(二)Customer類
(三)Bank類
(四)BankTest測試類
一、this
關(guān)鍵字的基本理解
- 當(dāng)前對象(在方法中):在非靜態(tài)方法中,
this
代表當(dāng)前正在調(diào)用該方法的對象。通過this
,我們可以訪問當(dāng)前對象的屬性和其他方法。 - 當(dāng)前正在創(chuàng)建的對象(在構(gòu)造器中):在構(gòu)造器中,
this
代表正在被創(chuàng)建的對象。可以使用this
在構(gòu)造器中調(diào)用其他構(gòu)造器,進行構(gòu)造器的鏈?zhǔn)秸{(diào)用。
二、this
調(diào)用屬性和方法
(一)一般情況
在非靜態(tài)方法內(nèi),當(dāng)方法的形參與對象的屬性不同名時,我們通過對象調(diào)用方法,可以直接在方法內(nèi)調(diào)用當(dāng)前對象的屬性或其他方法,此時即便不使用this
,也能明確區(qū)分是當(dāng)前對象的屬性和方法。一般情況下我們都選擇省略this
結(jié)構(gòu),代碼更加簡潔。
(二)特殊情況
當(dāng)方法的形參與對象的屬性同名時,為了區(qū)分這兩個變量,我們可以使用this
修飾的變量表示屬性,沒有用this
修飾的表示形參(局部變量)。
例如在以下代碼中:
public class Customer {private String firstName;private String lastName;public Customer(String f, String l) {this.firstName = f; // 名,使用 this 區(qū)分屬性和形參this.lastName = l; // 姓,使用 this 區(qū)分屬性和形參}
}
三、this
調(diào)用構(gòu)造器
我們可以在類的構(gòu)造器中,使用this(形參列表)
的方式調(diào)用當(dāng)前類中指定的其他構(gòu)造器。要求this(形參列表)
必須聲明在當(dāng)前構(gòu)造器的首行,并且一個類中聲明了n
個構(gòu)造器,則最多有n - 1
個構(gòu)造器可以聲明this(形參列表)
的結(jié)構(gòu)。
public class Account {private double balance;public Account() {}public Account(double init_balance) {this.balance = init_balance;}
}
四、案例分析
以下是一個包含Account
類、Customer
類、Bank
類以及BankTest
測試類的案例,通過銀行管理客戶和賬戶的場景來展示this
的用法。
(一)Account
類
該類表示賬戶,包含余額屬性balance
,以及存款deposit
和取款withdraw
方法。
public class Account {private double balance;public Account() {}public Account(double init_balance) {this.balance = init_balance;}public double getBalance() {return balance;}public void deposit(double amt) {if (amt > 0) {balance += amt;System.out.println("成功存入" + amt);}}public void withdraw(double amt) {if (balance >= amt && amt > 0) {balance -= amt;System.out.println("成功取出" + amt);} else {System.out.println("取款金額有誤余額不足");}}
}
(二)Customer
類
表示客戶,包含名firstName
、姓lastName
和賬戶account
屬性,以及相應(yīng)的 getter 和 setter 方法。
public class Customer {private String firstName;private String lastName;private Account account;public Customer(String f, String l) {this.firstName = f;this.lastName = l;}public String getFirstName() {return firstName;}public String getLastName() {return lastName;}public Account getAccount() {return account;}public void setAccount(Account acct) {this.account = acct;}
}
(三)Bank
類
表示銀行,包含用于保存多個客戶的數(shù)組customers
和記錄存儲的客戶個數(shù)的變量numberOfCustomer
。提供了添加客戶addCustomer
、獲取客戶個數(shù)getNumOfCustomers
和獲取指定索引位置客戶getCustomer
的方法。
public class Bank {private Customer[] customers;private int numberOfCustomer;public Bank() {customers = new Customer[10];}public void addCustomer(String f, String l) {Customer cust = new Customer(f, l);customers[numberOfCustomer] = cust;numberOfCustomer++;}public int getNumOfCustomers() {return numberOfCustomer;}public Customer getCustomer(int index) {if (index < 0 || index >= numberOfCustomer) {return null;} else {return customers[index];}}
}
(四)BankTest
測試類
在main
方法中創(chuàng)建了一個銀行對象,添加了兩個客戶,為第一個客戶設(shè)置了賬戶,并進行了取款和存款操作,最后輸出第一個客戶的賬戶余額。
public class BankTest {public static void main(String[] args) {Bank bank = new Bank();bank.addCustomer("哥", "劉");bank.addCustomer("碩", "張");bank.getCustomer(0).setAccount(new Account(1000));bank.getCustomer(0).getAccount().withdraw(50);bank.getCustomer(0).getAccount().deposit(100);System.out.println("賬戶余額為" + bank.getCustomer(0).getAccount().getBalance());}
}
在這個案例中,Customer
類的構(gòu)造器中使用了this
來區(qū)分形參和屬性。同時,在BankTest
測試類中,通過對象調(diào)用方法時,雖然沒有顯式使用this
,但實際上也是在操作當(dāng)前對象的屬性和方法。
通過這個案例,我們可以更深入地理解this
關(guān)鍵字在 Java 編程中的重要性和實際應(yīng)用。它能夠幫助我們更好地管理對象的屬性和方法,提高代碼的可讀性和可維護性。