功能仅适用于非面向对象的语言吗?

时间:2013-03-03 17:47:11

标签: java oop function methods

我被要求回答这个问题:

  

我应该在哪里放置/ **和* /的Javadoc特定注释表示法   如果我想告诉用户有关某个实例变量的细节   或方法?

我回答说:

  

在函数声明之上。

答案被拒绝,这就是原因:

  

函数是非面向对象的语言。方法是正确的名称。

这是真的吗?

3 个答案:

答案 0 :(得分:17)

  

是否仅在非面向对象的语言中找到函数?

没有。有面向对象的语言有功能。例如,C#是一种面向对象的语言,但它具有匿名函数

  

通常在面向对象语言(如Java或C#)中调用的类型成员的命名过程是什么?

通常它们被正确地称为方法,尽管这在语言与语言之间有所不同。在Java或C#中我会说“方法”。

例如,在Visual Basic中,函数子例程之间的干扰是基于它们是否返回值而不是基于是否它们与类型容器相关联。

JavaScript是一种面向对象的语言,它使用原型继承而不是类继承,通常将上述所有内容称为“函数”。

  

当人们随便谈论Java或C#时,人们经常将方法称为函数吗?

是。如果我正在撰写文档或书籍或学术文章,那么我会谨慎地做出区分。虽然每个人都熟悉计算机程序设计的艺术,但会将“功能”和“方法”理解为粗略的同义词。我不会拒绝你的回答。

答案 1 :(得分:1)

将此限制为特定语言的任何答案都存在固有的缺陷。此外,您还必须有效地处理静态方法和子例程。

计算机科学从术语'子程序'开始。可重复代码的小部分,可以任意执行以执行共同操作。示例可以在早期的编程语言中找到,例如BASIC。

功能是子程序的演变。他们接受争论,可能会或可能不会返回一个值。他们从数学中获取一些概念 - 输入,转换为给定的输出。

使用对象我们需要能够在对象上调用操作,我们这样做是暴露方法。与函数一样,它们接受参数,可能会也可能不会返回值。

静态方法旨在处理类的所有可能对象。

问题在于,纯面向对象的编程没有为函数(或实际上是子例程)的定义留下空间。而进化为面向对象的语言通常会保留函数的语法以实现方法。

Java 中,我们使用'Utility'类来提供public static方法的功能。 JavaScript中的Math类是另一个例子。

PHP 中,我们容忍使用单词function来定义方法。

C ++ 中,我们看到了两个函数和方法,都没有划分。实际上,C ++没有引用方法,称之为成员函数

答案 2 :(得分: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();
        }
    }