標籤:屬性 多個 傳回值 範圍 類型 情況 代碼 修飾符 形參
Java類的基本機構(部分)
學習這部分知識之前首先需要瞭解一下一些抽象的概念:類、對象、屬性、方法(函數)。
為了便於理解,我們用一個例子去理解這些概念。我們經常說人類,那麼所有的人都歸屬於一個類,那就是人,人類又是一個非常寬泛的概念,具體到某一個人比如張三,就是人類這個群體中的一個具體的人,即對象;張三會有自己的名字,性別,年齡等等自身的標籤,這些標籤就是我們說的屬性;同時張三在日常生活中會有很多行為:吃、喝、玩等等,這些行為我們稱之為方法(函數)。
一:通過這個例子,我們不難總結出以下幾點:
1:類是具有相同屬性和行為的對象的集合
我們每個人都有自己的名字,性別,年齡等標誌每個人的屬性,我們每天的行為都會有一樣的部分,因此大量的人聚在一起構成一個類:人類。
2:類和對象的關係是什嗎?
類定義了對象的屬性和方法,同時,屬性和方法又是對象的本質。
3:類的作用是什嗎?
類就是一個模板,用來定義多個對象共同的屬性和方法。
在實際的開發過程中,我們需要先建立一個類,再去執行個體化為對象,從而調用其方法,達到我們的目標,同時在分析過程中,我們通常是對某個特定的對象去分析,分析其屬性和方法,再去歸類。
二:首先就要掌握如何去建立一個類。格式如下:
[存取權限修飾符] [修飾符] class 類名 { 類體 }
具體代碼: 這就建立了一個PersonAccount類,代碼中對其屬性進行聲明。
class PersonAccount{//聲明屬性(賬戶帳號,密碼,餘額) String accountId = "123456789"; String pwd = "123456"; double balance;}
三:學會了建立一個類,接下來學習如何建立一個方法。格式如下:
[存取權限修飾符] [修飾符] 傳回值類型 方法名 (形式參數列表) { //形式參數就是我們通常所說的變數,只不過要加上變數類型,多個變數中間用逗號隔開
執行語句;
return 傳回值; //如果需要通過這個方法得到一個值,就需要用return,不需要值時用void
}
具體代碼: 我們在PersonAccount類中建立了一個查看ID的方法,前期學習的時候我們對存取權限修飾符和修飾符不作要求,因此可以略去,後面將會學習。
//查看ID (方法) String getAccountId() { return accountId; }
特別注意:方法中可以調用方法,但不能在方法中定義另一個方法。
在Java裡,同一範圍(類)中同名不同參的方法就構成了方法重載。
三大原則:
1:方法(函數)名稱相同;2:參數不同(包括數量、類型、順序的不同);3:同一範圍(類)。
注意:僅傳回值類型不同不構成方法重載。
例:
void fun (int x) {...}int fun (int x) {...}
上面這兩種方法就不構成方法的重載,我們可以想一下,當我們調用fun這個方法時,系統此時不知道應該進入哪一個方法去執行,就會報錯。因此,僅傳回值類型不同不構成方法的重載。需要注意的一點是,方法的重載與傳回值的類型毫無關係。那麼傳回值存在有什麼意義呢。可以理解為根據具體的開發執行個體,傳回值的存在是為了適應某些特定的業務需求而存在。另外,方法的重載一定是對於具有相同功能的方法,不同功能的方法一定不能進行方法重載。
例:
//存款(需要知道存款金額) void deposit(double amount) { balance = balance + amount; }//存款,活期 void deposit(double amount,int term) { balance = balance + amount; }
上面這兩種方法就是對deposit這個方法進行重載,在程式執行過程中,我只需要對這個方法進行傳參,比如1:deposit ( 10000 ) 2:deposit ( 10000,12 ),第一個語句胡自動根方法名和形參的情況自動匹配對應的方法,會調用 void deosit (double amount) { } 這個方法,那麼第二個語句則會進入下面的方法。也就是說,我們對方法進行重載以後,只需要對它傳參,也就是給這個方法具體的參數,系統編譯器會自動根據參數的類型和個數及順序來進入各自對應的函數。可以說Java是一門十分智能和進階的程式設計語言。
構造方法生來就是為了對類執行個體化,也就是建立一個對象。兩大特點:1:方法名必須與類名一致;2:無傳回值類型
要想使用一個類,實質上也就是使用其中某個對象的方法,我們就必須先去建立一個對象,就需要用構造方法。
[存取權限修飾符] 方法名 (形參列表) { 方法體 }
初學階段的方法體一般是對屬性的初始化(賦予初值),也就是類的執行個體化。
例:
public class car{ private String color; private double price; public car() { //這就是一個構造方法,沒有傳回值類型,方法名與類名一致。 } public car(String color) { this.color = color; //this.此處用於區分形式參數,表示類中的屬性 } public car(String color,double price) { this.color = color; this.price = price; } }
最後放上一段完整的代碼僅供參考,理解學習。
package LF; //建立一個個人賬戶類 class PersonAccount{//聲明屬性(賬戶帳號,密碼,餘額) String accountId = "123456789"; String pwd = "123456"; double balance;//查看ID (方法) String getAccountId() { return accountId; }//修改密碼 (不需要傳回值) void setPwd(String newPwd) { pwd = newPwd; }//查看餘額 (方法) double getBalance() { return balance; }//存款(需要知道存款金額) void deposit(double amount) { balance = balance + amount; }//存款,活期 , deposit方法的重載 void deposit(double amount,int term) { balance = balance + amount; } }
package LF;public class testAccount { public static void main(String[] args) { /** * 系統預設的構造方法語句 * PersonAccount(){ * } * 寫或者不寫,這個構造方法都存在 */ PersonAccount account1 = new PersonAccount();//建立一個PersonAccount類的對象: //調用account1裡的getAccountId()方法來擷取ID System.out.println("account1的ID是:"+account1.getAccountId()); //調用account1裡的getBalance()方法來擷取餘額 System.out.println("account1的餘額是:"+account1.getBalance()); account1.deposit(10000); //調用deposit方法存款10000元 //調用account1裡的getBalance()方法來擷取存款後餘額 System.out.println("存款後account1的餘額是:"+account1.getBalance()); System.out.println("賬戶初始密碼是:"+account1.pwd); }}
Java類的基本結構(部分)