- Java程序設計與實踐教程(第2版)
- 楊麗萍 王薇 張焱焱主編 北京云班科技有限公司副主編
- 2262字
- 2019-07-01 11:10:50
2.2 Java語言中類的定義
在Java語言中,類(class)是對一個特定類型對象的描述,它定義了一種新類型,即“類”是對象的定義,用戶也可以把它看作是對象的藍圖。因此,在類中可以包含有關對象屬性和方法的定義。其中,屬性是存儲數據項的變量,可以是任何類型。用戶通過這些數據項,可以區分類的不同對象;方法定義了用戶對類可以進行的操作,也決定了利用類的對象可以做的事情。一般來說,方法通常是對屬性進行操作的。
也就是說,類是由各種“成員”組成的,這里的“成員”指的就是類的“屬性和方法”。不過在討論時為了方便說明,本書會將其分為成員屬性與成員方法。在Java中定義類的語法格式如下:
[訪問權限修飾符] [final] [abstract] class類名稱 [extends單一父類] [implements 接口1, 接口2, …] { //屬性; //方法; }
在上面的語法中,以[]符號括起來的部分是可以忽略的。
用戶在指定“類名稱”時必須遵守Java的命名規則。即僅能使用“_”“$”“0~9”和英文字母,且名稱的第一個字符不可以為“0~9”,類的名稱不可以和Java關鍵字(keyword)相同。
另外,在Java語言中,英文字母大小寫視為不同。Java關鍵字指的是已經為Java語言所保留使用的特定字符串,在這之前編寫的程序中,public、class和import等都是Java語言保留使用的關鍵字。
2.2.1 類的屬性
成員屬性是具有某種數據類型的變量或常量,當創建一個對象的時候,它會包含類中定義的所有變量。在類中定義成員屬性的語法格式如下:
[訪問權限修飾符] [final] [static] 數據類型 成員屬性名稱;
因此,一個最簡單的成員屬性定義如下:
數據類型 成員屬性名稱;
【例2-1】 定義“銀行賬戶”類,主要包括戶名、賬號、密碼及賬戶余額4個成員屬性。
//文件名:Cust.java Public class Cust //Cust類 { //定義成員屬性 String name; //字符串 int ID; //整型變量 String PWD; //字符串 int money; //整型變量 }
2.2.2 類的方法
成員方法是數行程序代碼的集合,用來操作類中的成員屬性,包括方法頭和方法體兩部分。其中,方法頭確定方法的名字、形式參數的名字及類型、返回值的類型和訪問權限等。
1.方法的定義
方法體由括在花括號內的聲明部分和語句部分組成,定義成員方法的語法格式如下:
[訪問權限修飾符] [final] [static] [abstract] 返回值數據類型 方法名([形式參數列 表])[throws異常類] { //方法體 }
【例2-2】 在“銀行賬戶”類中,定義初始化方法和輸出方法,即將Cust類中的戶名、賬號、密碼及賬戶余額4個成員屬性初始化并輸出。
void initCust(String newName, int newID, String newPWD, int newMoney){ name = newName; ID = newID; PWD = newPWD; money = newMoney; } void printCust(){ System.out.println("戶名:"+name); System.out.println("賬號:"+ID); System.out.println("賬戶余額:"+money); }
這個例子示范了方法的“返回值”和“形式參數列表”的使用方法,參數列表為方法“傳入”信息的管道,而返回值則是方法“輸出”信息的管道。
方法可以接受一個“空的”參數列表。Java語言并沒有要求用戶一定要傳入參數,返回值也是如此,但一個沒有返回值的方法必須指定返回值數據類型為void。若具有返回值,則必須使用return關鍵字來輸出返回值。
2.main( )方法
在Java中有一個與C/C++主函數相類似的方法,即為主方法。包含主方法的類稱為主類,主類是程序執行的入口點。在一個.java文件中,可以定義多個類,但只能有一個public類,且.java文件名需要與public類名同名。在MyEclipse中,當創建好的.java文件與所要創建的public類名不相符時,可單擊MyEclipse主窗口中左側窗格文件列表中對應的文件,按F2鍵對文件進行重命名。
【例2-3】 定義一個WelcomeDemo類,并輸出“歡迎來到Java的世界…”。
//文件名:WelcomeDemo.java public class WelcomeDemo { public static void main(String[] args){ //主方法 System.out.println("歡迎來到Java的世界..."); } }
說明:
(1)public關鍵字是訪問權限修飾符,聲明主方法為public,使其他的類可以訪問這個方法。
(2)static關鍵字告知編譯器main方法是一個靜態方法。也就是說,main方法中的代碼是存儲在靜態存儲區的,即當定義了類以后這段代碼就已經存在了。如果main()方法沒有使用static修飾符,那么編譯不會出錯,但是如果你試圖執行該程序將會報錯,提示main()方法不存在。因為包含main()的類并沒有實例化(即沒有這個類的對象),所以其main()方法也不會存在。而使用static修飾符則表示該方法是靜態的,不需要實例化即可使用。
(3)void關鍵字表明main()的返回值是無類型的。
(4)參數String[] args,用于在命令行狀態下向main()方法傳遞數據。其中,對于args參數用戶可以任意修改其名稱。但缺少args參數時,MyEclipse會提示main()方法不存在的錯誤信息。
【例2-4】 定義一個ArgsDemo類,并可將向main()方法傳遞的數據值依次輸出。
//文件名:ArgsDemo.java public class ArgsDemo{ public static void main(String[] args){ for (int i=0; i<args.length; i++) System.out.print(args[i]); } }
在命令提示符下,利用javac ArgsDemo.java將其編譯生成ArgsDemo.class后,使用命令java ArgsDemo a b c,輸出結果如下:
abc
3.方法的調用
方法的調用,即執行該方法。調用方法的語法格式如下:
方法名(實際參數表);
【例2-5】 求矩形的面積。
//文件名:RecArea.java public class RecArea{ static int area(int a, int b) { int s; s = a*b; return s; } public static void main(String[] args){ int result, x=5, y=6; result = area(x, y); System.out.println(result); } }
在此例中,實現了實參到形參的數據傳遞,多個實參之間用逗號分開。要注意實參的個數、順序、類型和形參要一一匹配。其執行的過程是先將實參傳遞給形參,然后執行方法,當方法運行結束后,從調用該方法的語句的下一語句處開始執行。
2.2.3 案例分析:一個簡單的Java程序
1.案例描述
建立一個完整的程序,要求銀行賬戶類包含用戶的賬號、戶名、密碼和賬戶余額等個人信息,并對各項信息進行初始化和輸出的操作。
2.案例分析
根據案例描述中的信息,本案例建立一個銀行賬戶類,成員屬性包含用戶的賬號、戶名、密碼和賬戶余額等個人信息,成員方法包括對信息的初始化和輸出。
3.案例實現
本例的代碼如下:
//文件名:CustDemo.java class Cust { String name; int ID; String PWD; int money; void initCust(String newName, int newID, String newPWD, int newMoney){ name = newName; ID = newID; PWD = newPWD; money = newMoney; } void printCust(){ System.out.println("戶名:"+name); System.out.println("賬號:"+ID); System.out.println("賬戶余額:"+money); } } public class CustDemo{ public static void main(String[] args){ Cust myCust = new Cust(); myCust.initCust("Tom",100, "11111",10000); myCust.printCust(); } }
4.歸納與提高
本案例中,public static void main(String[] args)建立了一個名為main的主方法,一個應用程序可以有多個方法,但只能有一個main()方法,main()方法是程序的入口點,若無此方法,則程序無法運行。
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- JIRA 7 Administration Cookbook(Second Edition)
- Julia Cookbook
- Python算法從菜鳥到達人
- RabbitMQ Cookbook
- Swift細致入門與最佳實踐
- C++新經典
- Java系統化項目開發教程
- Raspberry Pi Home Automation with Arduino(Second Edition)
- 匯編語言編程基礎:基于LoongArch
- 時空數據建模及其應用
- OpenMP核心技術指南
- OpenCV 3計算機視覺:Python語言實現(原書第2版)
- JavaScript從入門到精通(視頻實戰版)
- After Effects CC技術大全