2013-03-03 121 views
4

有人問我來回答這個問題:功能只在非面向對象的語言中使用嗎?

我應該在哪裏放/ **的Javadoc具體的意見和符號,如果我想向大家介紹一個特定實例變量 或方法的用戶具體*/ ?

我回答:

上面的函數聲明。

答案被否決,這是原因:

函數是在非面向對象的語言。方法是正確的名稱。

這是真的嗎?

+0

是的,確實如此。在面向對象的語言中,我們說函數作爲方法..因爲那個方法屬於那個特定的對象...... – 2013-03-03 17:49:19

+0

是的,它是..... – 2013-03-03 17:49:38

+14

我會說你正在處理一個術語納粹... – Mysticial 2013-03-03 17:51:10

回答

0

函數未綁定到類。

功能類似於doStuff();

方法就像someThing.doStuff();SomeClass.doStuff();

在Java中,沒有這樣的功能。他們都是方法。即

class Test { 

     public static void doSomething() {...} 
     public void otherThing() {...} 

     public static void main(String[] args) { 
      doSomething(); //implied Test.doSomething(); 
     } 

     public Test() { 
      otherThing(); //implied this.otherThing(); 
     } 
    } 
+0

我認爲這個問題超越了Java。例如,在Python中,您可以同時擁有函數*和*方法。你想擴展一個函數實際上是什麼,以及實際上是一種什麼方法? – Makoto 2013-03-03 17:50:53

+0

@Makoto是,但需要FGITW:P – Doorknob 2013-03-03 17:51:30

+0

@SantoshPingale不,我不是 – Doorknob 2013-03-03 18:01:15

1

任何將此限制爲特定語言的答案本質上是有缺陷的。另外你還必須有效地處理靜態方法和子程序。

計算機科學從術語'子程序'開始。可以任意執行以執行共同操作的小部分可重複代碼。早期編程語言(如BASIC)中有示例。

功能是子程序的演變。他們接受爭論,可能會或可能不會返回一個價值。他們從數學中獲取一些概念 - 輸入,轉換成給定的輸出。

對象我們需要能夠調用對象的動作,我們這樣做是暴露方法。像函數一樣,它們需要參數,並且可能會返回值或不會返回值。

靜態方法設計用於處理類的所有可能對象。

問題是,純粹的面向對象編程沒有爲函數的定義(或者實際上是子例程)留下空間。演變成面向對象的語言通常會保留函數的語法來實現方法。

的Java我們訴諸使用「工具」類提供的功能public static方法。 JavaScript中的Math類是另一個例子。

PHP我們容忍這個詞的使用function的定義方法。

C++我們既看到了函數和方法,也沒有劃分界限。事實上,C++沒有提及方法,稱它們爲成員函數

17

僅在非面嚮對象語言中才能找到函數嗎?

不。有一些面向對象的語言具有功能。例如,C#是一種面向對象的語言,但它具有匿名函數

什麼是通常在像Java或C#這樣的面嚮對象語言中調用的類型成員的命名過程?

它們通常被稱爲正確方法,雖然這從語言不同語言。在Java或C#中,我會說「方法」。

在Visual Basic,例如,distiction被功能子程序的無論它們是否返回一個值,而不是它們是否與一種類型相關聯的容器的基礎上的基礎上之間進行比較。

JavaScript是一種使用原型繼承而不是類繼承的面嚮對象語言,通常將上述所有內容都稱爲「函數」。

當人們隨便談論Java或C#時,人們是否經常將方法作爲函數?

是的。如果我編寫文檔或書籍或學術文章,那麼我會小心地作出區分。按照普遍的說法,雖然每個人都合理地熟悉計算機編程藝術,但將「功能」和「方法」理解爲大致同義詞。我不會拒絕你的回答。

相關問題