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

8.2 對象家族中的成員

對象家族中有什么呢?有對象的成員方法和對象的成員變量,這些都有什么含義?如何使用它們?在本節(jié)中,將會通過實例詳細地講述。

8.2.1 對象的成員方法

方法就是能夠讓這個對象做什么,或者表現(xiàn)出什么狀態(tài)的函數(shù)。舉一個例子,有一個自行車的對象,如何讓它停止、如何駕駛它,這些都是前面所提到的方法。方法就是其他編程語言中所提到的函數(shù),而這個函數(shù)用來實現(xiàn)對象的某個功能,或表現(xiàn)出對象的某個狀態(tài)。

什么是成員?成員的意思就是指它是屬于對象的,就好比某個俱樂部的成員是屬于這個俱樂部的一樣。

將前面兩個概念連在一起,就很清楚了。所謂的成員方法就是屬于對象的,能夠讓對象做什么或表現(xiàn)出什么狀態(tài)的函數(shù)。

【實例8.2】下面看一個實例。

01   public class object2
02   {
03         void print()
04         {
05              System.out.println("小明是一名優(yōu)秀的程序員");
06         }
07          public static void main(String[] args)
08         {
09              object2 m=new object2 ();
10              m.print();
11         }
12   }

【代碼說明】從這個程序段中,可以看到“print()”函數(shù)其實就是“object2”這個類中的成員方法。要想使用這個成員方法,必須根據(jù)這個類“object2”構(gòu)造出一個對象,再利用這個對象初始化一個對象句柄,這樣就可以利用這個句柄來訪問這個成員方法。

【運行效果】

小明是一名優(yōu)秀的程序員

【實例8.3】下面再看一個復(fù)雜一點的有關(guān)成員方法的實例。

01   public class object3
02   {
03         public void print()
04         {
05              for(int i=0;i<=5;i++)
06              {
07                   for(int j=5-i;j>=0;j--)
08                   {
09                        System.out.print("*");
10                   }
11                   System.out.println();
12              }
13         }
14         public static void main(String[] args)
15         {
16              object3 pro=new object3();
17              pro.print();
18         }
19   }

【代碼說明】在這個程序中,構(gòu)造了一個方法“print()”,然后構(gòu)造對象pro,通過pro來訪問這個方法。

【運行效果】

******
*****
****
***
**
*

【實例8.4】仔細來看看下面的程序,將上面程序改變一下。

01   public class object4
02   {
03         public static void main(String[] args)
04         {
05              for(int i=0;i<=5;i++)
06              {
07                   for(int j=5-i;j>=0;j--)
08                   {
09                        System.out.print("*");
10                   }
11                   System.out.println();
12              }
13         }
14   }

【代碼說明】這段程序沒有定義類中的方法“print()”,而是直接輸出內(nèi)容。這是一種面向過程開發(fā)的程序。

【運行效果】

******
*****
****
***
**
*

這個程序是否比前面那個程序段讀起來要費勁呢?而這個就是面向?qū)ο蟪绦蛟O(shè)計和面向過程程序設(shè)計的最大區(qū)別。面向?qū)ο蟮某绦蛟O(shè)計將這個程序中每個部件(包括成員方法),作為一個模塊,等要使用它的時候,再隨時調(diào)用它們,而面向過程的程序設(shè)計,將這個程序的需求按照順序的步驟來編寫。

下面再分析一下實例8.3中的代碼,在面向?qū)ο蟮某绦蛟O(shè)計中,讀者一定要學(xué)會一點,首先看主運行程序,也就是“public static void main(String[] args){}”。在這個主運行程序中,看到了兩句代碼。一句是對象初始化語句,一句是利用對象引用成員方法的語句,這樣讀者就很清楚,這個程序要干什么,然后再仔細地看這個成員方法是干什么的,這樣會使整個程序變得越來越輕松。

【實例8.5】成員方法越來越復(fù)雜。面向?qū)ο蟮某绦蛟O(shè)計的思路,會使得程序很容易讀。下面再看一個更加復(fù)雜的程序,來體會使用成員方法的優(yōu)點。

01   public class object5
02   {
03         public void print2()
04         {
05              for(int i=5;i>0;i--)
06              {
07                   for(int k=0;k<=(5-i);k++)
08                   {
09                        System.out.print(" ");
10                   }
11                   for(int j=1;j<=(2*i-1);j++)
12                   {
13                        System.out.print("*");
14                   }
15                   System.out.println();
16              }
17         }
18         public void print1()
19         {
20              for(int i=1;i<=5;i++)
21              {
22                   for(int j=0;j<=(5-i);j++)
23                   {
24                        System.out.print(" ");
25                   }
26                   for(int k=1;k<=(2*i-1);k++)
27                   {
28                        System.out.print("*");
29                   }
30                   System.out.println();
31              }
32         }
33         public static void main(String[] args)
34         {
35              object5 pro=new object5();
36              pro.print1();
37              pro.print2();
38         }
39   }

【代碼說明】這個程序段看起來有點復(fù)雜,使用上面說的讀程序的方法。首先看看主運行程序,在主運行程序中有3句:一句是對象初始化語句,一句是引用“print1()”方法,最后一句是引用“print2()”方法。然后再看“print1()”和“print2()”兩個方法是如何實現(xiàn)的。至于這個方法的實現(xiàn)過程,應(yīng)該很簡單,只不過是一個多層for循環(huán)語句而已,讀者可以自己分析它的實現(xiàn)過程。

【運行效果】

        *
      ***
    *****
  *******
*********
*********
  *******
    *****
      ***
        *

成員方法就是函數(shù)段,而函數(shù)段擁有自己的特性。在定義函數(shù)時必須遵照下面的結(jié)構(gòu):

返回值類型 方法名(形式參數(shù))
{
  方法體
}

首先來討論一下返回值類型。什么叫返回值?返回值就是一個函數(shù)結(jié)果所獲得的值,將這個值返回到主程序中,并且將這個值作為主程序中運行的參數(shù)的值。

【實例8.6】下面看一個有關(guān)返回值的例子。

01   public class object6
02   {
03         int print(int x)
04         {
05              return 2*x;
06         }
07         public static void main(String[] args)
08         {
09              object6 pro=new object6();
10              System.out.println(pro.print(3));
11         }
12   }

【代碼說明】這個程序段中,第3行創(chuàng)建了一個“int print(int x)”方法,在這個方法中返回了“2*x”,將這個值帶回到主運行程序中去,于是在主運行程序中,根據(jù)“pro.print(x)”中的參數(shù)“x=3”,得出這個方法的返回值是6。其實還有兩個概念希望讀者能清楚,就是實參和形參。剛才說的“int print(int x)”中的“x”就是形參,而主運行程序中相同函數(shù)的參數(shù)被稱為實參。

【運行效果】

6

上面說到返回值,但有的函數(shù)方法是沒有返回值的,那該如何處理呢?在程序設(shè)計中,如果一個方法函數(shù)沒有返回值,那么可以將函數(shù)結(jié)構(gòu)中的返回值類型寫成“void”,這個就代表此函數(shù)無返回值。

【實例8.7】例如下面的程序段。

01   public class object7
02   {
03         void print()
04         {
05              System.out.println("我是一名程序員");
06         }
07         public static void main(String[] args)
08         {
09              object7 pro=new object7();
10              pro.print();
11         }
12   }

【代碼說明】第3行定義了print()方法,其只是輸出一段內(nèi)容,并不返回任何值,所以定義為void類型。第10行演示如何調(diào)用這個方法。

【運行效果】

我是一個名程序員

【實例8.8】上面的程序段就是一個無返回值類型的程序例子。為了加深印象,下面看一個詳細的復(fù)雜的實例。

01   public class object8
02   {
03         public int sum(int x,int y,int z)
04         {
05              int sum;
06              return sum=x+y+z;
07         }
08         public int aver(int x,int y,int z)
09         {
10              int aver;
11              return aver=(x+y+z)/3;
12         }
13         void print()
14         {
15              System.out.println("這個就是這個同學(xué)的成績");
16         }
17         public static void main(String[] args)
18         {
19              object8 num=new object8();
20              System.out.println(num.sum(90,80,70));
21              System.out.println(num.aver(90,80,70));
22              num.print();
23         }
24   }

【代碼說明】以上的程序中包含無返回值的print()方法(第13~16行),同時也包含了帶返回值的方法sum()和aver()(第3~12行)。

【運行效果】

240
80
這個就是這個同學(xué)的成績

8.2.2 對象的成員變量

成員變量是什么呢?理解了成員方法,一定可以知道成員變量是什么。成員變量就是對象所擁有的、并且代表對象的屬性值,例如一個自行車對象,它的顏色、材料等都是自行車的屬性值,也可以說是它的成員變量。

提起成員變量,就想到前面講過的局部變量。其實這里說的成員變量相當(dāng)于前面說過的類變量。它也可以不用初始化,系統(tǒng)自動給它賦值。局部變量就不能不初始化了,否則在編譯的時候會報錯,前面已經(jīng)有過實例,此小節(jié)就不再贅述。

主站蜘蛛池模板: 九龙坡区| 巴林左旗| 苍梧县| 汽车| 中山市| 河东区| 崇明县| 白水县| 宿州市| 晋宁县| 呼伦贝尔市| 加查县| 南开区| 万荣县| 普陀区| 江山市| 古蔺县| 镇远县| 廉江市| 邵东县| 东至县| 奇台县| 陇南市| 昭苏县| 梧州市| 通榆县| 乐东| 板桥市| 会理县| 泗水县| 安国市| 英山县| 全南县| 定襄县| 沅江市| 汪清县| 枞阳县| 康马县| 萝北县| 永福县| 咸阳市|