一切都是對象之方法、參數和返回值

方法、參數和返回值
  許多程序設計語言(像C和C++)用函數這個術語來描述命名子程序;而在Java裏卻常用方法這個術語來表示“做某些事情的方式”。實際上,繼續把它看做是函數也無妨。儘管這只是用詞上的差別。
  Java的方法決定了一個對象能夠接收什麼樣的消息。方法的基本組成部分包括:名稱、參數、返回值和方法體。下面是它最基本的形式:

			ReturnType methodName(/* Argument list */){
				/* Method body */
			}

      返回類型描述的是調用方法之後從方法返回的值。參數列表給出了要傳給方法的信息的類型和名稱。方法名和參數列表(它們合起來被稱爲“方法簽名”)唯一地標識出某個方法。
  Java中的方法只能作爲類的一部分來創建。方法只有通過對象才能被調用,且這個對象必須能執行這個方法調用。如果試圖在某個對象上調用它並不具備的方法,那麼在編譯時就會得到一條錯誤消息。通過對象調用方法時,需要先列出對象名,緊接着是句點,然後是方法名和參數列表,如:

			objectName.methodName(arg1,arg2, arg3);

      例如,假設有一個方法f(),不帶任何參數,返回類型是int。如果有個名爲a的對象,可以通過他調用f(),那麼就可以這樣寫:

			int x = a.f();

      返回值得類型必須要與x的類型兼容。
  這種調用方法的行爲通常被稱爲發送消息給對象。在上面的例子中,消息是f(),對象是a。面向對象的程序設計通常簡單的歸納爲“向對象發送消息”。
參數列表
  方法的參數列表指定要傳遞給方法什麼樣的消息。正如你可能料想的那樣,這些消息像Java中的其他信息一樣,採用的都是對象形式。因此,在參數列表中必須指定每個所傳遞對象的類型及名字。像Java中任何傳遞對象的場合一樣,這裏傳遞的實際上也是引用,並且引用的類型必須正確。如果參數被設爲String類型,則必須傳遞一個String對象;否則,編譯器將拋出錯誤。
  假設某個方法接受String爲其參數,下面是其具體定義,它必須置於某個類的定義內才能被正確編譯。

			int storage(String s){
				return s.length()*2;
			}

      此方法告訴你,需要多少個字節才能容納一個特定的String對象中的信息(字符串中的每個字符的尺寸都是16位或2個字節,以此來提供對Unicode字符集的支持)。此方法的參數類型是String,參數名是s。一旦將s傳遞給此方法,就可以把他當作其他對象一樣進行處理(可以給它傳遞消息)。在這裏,s的length()方法被調用,它是String類提供的方法之一,會返回字符串包含的字符數。
  通過上面的例子,還可以瞭解到return關鍵字的用法,它包括兩方面:首先,它代表“已經做完,離開此方法”。其次,如果此方法產生了一個值,這個值要放在return語句後面,在這個例子中,返回值是通過計算s.length()*2這個表達式得到的。
  你可以定義方法返回任意想要的類型,如果不想返回任何值,可以指示此方法返回void(空)。下面是一些例子:

			boolean flag() {return true; }
			double naturalLogBase() {return 2.718; }
			void nothing() {return;}
			void nothing2() {}

      若返回值類型是void,return關鍵字的作用只是用來退出方法。因此,沒有必要到方法結束時才離開,可在任何地方返回。但如果返回類型不是void,那麼無論在何處返回,編譯器都會強制返回一個正確的返回值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章