方法(method)和函式(function)有什麼區別?

伯樂線上讀者發表於2013-07-30

【感謝@AvisBlume 的熱心翻譯。如果其他朋友也有不錯的原創或譯文,可以嘗試推薦給伯樂線上。】

“我用了很久的Applescript,但在shell指令碼設計方面還是個新手。為了提高指令碼效能,我想要多瞭解一些常用的指令碼語言,譬如Javascript或Python。 

有些概念我一直很困惑,譬如“物件導向”、“類”和“例項化”。 

希望有人能用簡潔的話語幫我解釋下方法(method)和函式(function)的區別。在google上找到的那些答案對我來說太難理解了。 

謝謝。”

這個問題還是 willc2 在 2008 年 9 月 30 日在 StackOverflow 上提問的。

 

下面先來看看被選為最佳答案的回覆(來自  Andrew Edgecombe ):

函式是一段程式碼,通過名字來進行呼叫。它能將一些資料(引數)傳遞進去進行處理,然後返回一些資料(返回值),也可以沒有返回值。

所有傳遞給函式的資料都是顯式傳遞的。

方法也是一段程式碼,也通過名字來進行呼叫,但它跟一個物件相關聯。方法和函式大致上是相同的,但有兩個主要的不同之處:

  1. 方法中的資料是隱式傳遞的;
  2. 方法可以操作類內部的資料(請記住,物件是類的例項化–類定義了一個資料型別,而物件是該資料型別的一個例項化)

以上只是簡略的解釋,忽略了作用域之類的問題。

 

Raffi Khatchadourian 對 Andrew Edgecombe 答案的補充:

對於 1),你應當再加上“ 方法在 C++ 中是被稱為成員函式”。因此,在 C++ 中的“方法”和“函式”的區別,就是“成員函式”和“函式”的區別。此外,諸如 Java 一類的程式語言只有“方法”。所以這時候就是“靜態方法”和“方法”直接的區別。

對於2),你應當補上方法可以操作已在類中宣告的私有例項(成員)資料。其他程式碼都可以訪問公共例項資料。

 

Aaron 的回答:

方法和物件相關;

函式和物件無關。

Java中只有方法,C中只有函式,而C++裡取決於是否在類中

 

關於“方法”和“函式”之間的區別,歡迎其他朋友在評論補充自己觀點。

相關文章