深入Java物件導向之預備篇(2.方法研究) (轉)

worldblog發表於2007-08-17
深入Java物件導向之預備篇(2.方法研究) (轉)[@more@]

  的方法
方法(method)的定義:
  1 在java中員可以把在一個程式中多次用到的某個特定的任務
定義為方法.這些方法有時被成為(程式設計師自定義方法:programmer-defined method).
  而方法可以由方法呼叫(method call)來啟用(invoke)以其他任務.據個例子:
老闆(呼叫者)要求員工(被呼叫者)完成一項任務,而老闆並不知道工人怎樣完成任務,而工人中
組織者比如車間主任他接到任務後,分配給其他一線的工人.方法和它的呼叫就象上述者種關係一樣.
  3 方法呼叫的好處,方法使程式設計師能夠將程式模組化,其優點在於,1.這種分而治之的方法使的開發
更易於管理,2.另一個優點是"軟體的複用性"即利用已有的方法構成新的程式,這一點也是面向的
重點突出的一點.3.就是在於避免程式中的程式碼的重複使用.將程式碼打包成方法就可以透過呼叫方法,在程式中的幾個不同的位置執行該程式碼.
從而加快程式執行速度.
  下面用一個例子可以很好的說明方法的呼叫.
  1 //Fig.1-1:SquareInt.java
  2 import java.awt.Container;
  3 import javax..*;

  4 public class SquareInt extends JApplet{
  5  public void init() {
  6  String output="";
  7  JTextArea outputArea=new JTextArea(10,20);
  8  Container c=getContentPane();
  9  c.add(outputArea);

  10  int result;
  11  for(int x=1;x<=10;x++){
  12  result=square(x);
  13  output+="The square of"+x+"is"+result+" ";
  14  }
  15  outputArea.setText(output);
  16  }
  17 public int square(int y)
  18  { return y*y}
  19  }
  20  }
此例是一個計算平方的applet,其中的迴圈控制將1-10的平方數在applet的Container中顯示出來.
我們來逐步分析其中的方法呼叫:
1 .程式第7行中 JTextArea outputArea=new JTextArea(10,20);宣告瞭 JTextArea 引用 outputArea,並賦值給方法JTextArea呼叫結果.
  方法JTextArea outputArea=new JTextArea(10,20);返回一個applet的內容窗格引用,可以顯示多行文字的GUI構件.
2.同樣的第8行Container c=getContentPane();宣告瞭Contanier引用c,並賦值給方法c=getContentPane()呼叫結果.這個方法可以返回一個applet的內容窗格引用,可用於在applet中顯示文字框,
  而c.add(outputArea);把outputArea引用的JTextArea GUI構件放入物件applet中.使applet可以顯示它
3 第15行outputArea.setText(output);使用方法setText把outputArea的文字置為output串
4 而上述3種方法可以用這樣的語言來通俗描述:
  我現在建立一個物件叫outputArea 然後在用JTextArea中的方法 顯示一個10行20列的文字框,(目的達到),然後那我又想把它能放入applet中,於是就
 又建立物件c 而c引用了Container中的getContentPane()方法.(ok 成功了)然後在用方法setText將文字顯示出來.

5.方法過載:方法可以定義幾個同名的方法,只要這些方法具有不同的引數集合(引數阿數量.型別.和次序),這稱為方法過載(method overload)當呼叫一個過載的方法時,java的透過檢查呼叫語句中的引數的數量,型別和次序就可以選擇適當的方法.方法過載一般用來建立對不同型別的資料進行類似的操作方法.
  過載方法是根據方法名及引數型別的組合,引數的順序對編譯器來說很重要,方法不能以返回值型別來區分,
  方法過載可以有不同返回值型別.但一定要有不同的參數列.
  例如上例就可以使方法過載
  import java awt.*;
  import javax.swing.*;
  public class MethodOverload extends JApplet{
  JTextArea.outputArea;
  public void init(){
  outputArea=new JTextArea(2,20);
  Container c=get ContentPane();
  c.add(outputArea);

  outputArea.setText("The square of integer 7 is"+square(7)+" The square of double 7.5 is"+square(7.5));
  }
  public int square(int x)
  {
  return x*x;
  }
  public double square(double y)
  {
  return y*y;
  }
  }
  此程式就是根據程式中返回的值來確定 return的方法.
 

總結:在java中類似這些方法還有很多,比如 Integer.parseInt  JOptionPane.showMessageDialog
 大多數這些方法很好的體現了 java的 upcasting思想.所以方法的呼叫在java程式設計中是很重要的.而方法的呼叫就象在做飯一樣,java中的好比各種蔬菜佐料.
 它們現在就擺在你的面前,而你現在只需要用這些蔬菜佐料用你自己的手藝(方法)來給我們做一道豐盛的晚餐(程式).並不需要你去知道這菜是怎麼來的,怎麼種的菜,怎麼配的料.一切都看你的了.

注:java中方法呼叫的常見錯誤:
1.在方法的定義中不寫返回值型別會產生語法錯誤
2.從一個返回型別宣告為void的方法中返回一個值會產成語法錯誤
3.在方法參數列的右括號的加一個分號是一個錯誤.
4.傳遞給方法的參量與對應的引數型別不相容是語法錯誤
5.在一個方法中定義另一個方法將產生語法錯誤


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-963052/,如需轉載,請註明出處,否則將追究法律責任。

相關文章