方法(method)和函數(shù)(function)有什么區(qū)別?
“我用了很久的Applescript,但在shell腳本設(shè)計方面還是個新手。為了提高腳本性能,我想要多了解一些常用的腳本語言,譬如Javascript或Python。
有些概念我一直很困惑,譬如“面向?qū)ο?rdquo;、“類”和“實例化”。
希望有人能用簡潔的話語幫我解釋下方法(method)和函數(shù)(function)的區(qū)別。在google上找到的那些答案對我來說太難理解了。 謝謝。
這個問題還是 willc2 在 2008 年 9 月 30 日在 StackOverflow 上提問的。
下面先來看看被選為***答案的回復(來自 Andrew Edgecombe ):
函數(shù)是一段代碼,通過名字來進行調(diào)用。它能將一些數(shù)據(jù)(參數(shù))傳遞進去進行處理,然后返回一些數(shù)據(jù)(返回值),也可以沒有返回值。
所有傳遞給函數(shù)的數(shù)據(jù)都是顯式傳遞的。
方法也是一段代碼,也通過名字來進行調(diào)用,但它跟一個對象相關(guān)聯(lián)。方法和函數(shù)大致上是相同的,但有兩個主要的不同之處:
- 方法中的數(shù)據(jù)是隱式傳遞的;
- 方法可以操作類內(nèi)部的數(shù)據(jù)(請記住,對象是類的實例化–類定義了一個數(shù)據(jù)類型,而對象是該數(shù)據(jù)類型的一個實例化)
以上只是簡略的解釋,忽略了作用域之類的問題。
Raffi Khatchadourian 對 Andrew Edgecombe 答案的補充:
對于 1),你應(yīng)當再加上“ 方法在 C++ 中是被稱為成員函數(shù)”。因此,在 C++ 中的“方法”和“函數(shù)”的區(qū)別,就是“成員函數(shù)”和“函數(shù)”的區(qū)別。此外,諸如 Java 一類的編程語言只有“方法”。所以這時候就是“靜態(tài)方法”和“方法”直接的區(qū)別。
對于2),你應(yīng)當補上方法可以操作已在類中聲明的私有實例(成員)數(shù)據(jù)。其他代碼都可以訪問公共實例數(shù)據(jù)。
Aaron 的回答:
方法和對象相關(guān);
函數(shù)和對象無關(guān)。
Java中只有方法,C中只有函數(shù),而C++里取決于是否在類中。