2013-03-03 76 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#时,人们是否经常将方法作为函数?

是的。如果我编写文档或书籍或学术文章,那么我会小心地作出区分。按照普遍的说法,虽然每个人都合理地熟悉计算机编程艺术,但将“功能”和“方法”理解为大致同义词。我不会拒绝你的回答。

相关问题