官术网_书友最值得收藏!

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()方法是程序的入口點,若無此方法,則程序無法運行。

主站蜘蛛池模板: 高州市| 洛隆县| 镇巴县| 中超| 建平县| 赣州市| 那坡县| 衡水市| 四会市| 太白县| 木兰县| 卫辉市| 临澧县| 崇阳县| 天峨县| 彝良县| 织金县| 黄陵县| 青海省| 交口县| 西乌珠穆沁旗| 渝中区| 基隆市| 迁西县| 大同市| 莎车县| 利川市| 乌审旗| 鄄城县| 左贡县| 高唐县| 临潭县| 登封市| 丽江市| 绥德县| 霍州市| 余干县| 公主岭市| 罗平县| 时尚| 肇源县|