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