我被要求回答这个问题:
如果我想告诉用户有关某个实例变量或方法的详细信息,我应该将 /** 和 */ 的 Javadoc 特定注释符号放在哪里?
我回答说:
在函数声明之上。
答案被拒绝了,原因如下:
函数是非面向对象的语言。方法是正确的名称。
这是真的?
函数是否仅在非面向对象语言中存在?
不,有些面向对象的语言具有功能。例如,C# 是一种面向对象的语言,但它具有匿名函数。
什么是命名过程,它们是通常在 Java 或 C# 等面向对象语言中调用的类型的成员?
通常它们被正确地称为方法,尽管这因语言而异。在 Java 或 C# 中,我会说“方法”。
例如,在 Visual Basic 中,函数和子例程之间的区别是基于它们是否返回值,而不是基于它们是否与类型容器相关联。
JavaScript 是一种面向对象的语言,它使用原型继承而不是类继承,通常将上述所有内容称为“函数”。
人们在随便谈论 Java 或 C# 时是否经常将方法称为函数?
是的。如果我在写文档、书籍或学术文章,那么我会小心区分。尽管每个熟悉计算机编程艺术的人都会将“功能”和“方法”理解为粗略的同义词,但用普通话来说。我不会拒绝你的回答。
任何将其限制为特定语言的答案本质上都是有缺陷的。此外,您还必须有效地处理静态方法和子例程。
计算机科学始于术语“子程序”。可以任意执行以执行常见操作的可重复代码的小部分。在早期的编程语言(如 BASIC)中可以找到示例。
函数是子程序的演变。它们接受参数,可能会也可能不会返回值。他们从数学中获取一些概念——输入,翻译成给定的输出。
对于对象,我们需要能够对对象调用操作,我们这样做是为了公开方法。像函数一样,它们接受参数并且可能返回值,也可能不返回值。
静态方法旨在作用于类的所有可能对象。
问题是,纯粹的面向对象编程没有为函数(或实际上是子例程)的定义留下任何空间。发展为面向对象的语言通常保留函数的语法来实现方法。
在Java中,我们求助于使用“实用程序”类来提供函数作为public static
方法。JavaScript 中的Math
类是另一个例子。
在PHP中,我们容忍使用这个词function
来定义方法。
在C++中,我们看到了函数和方法,两者都没有界限。事实上,C++ 没有引用方法,将它们称为成员函数。
函数类似于doStuff();
.
方法类似于someThing.doStuff();
or SomeClass.doStuff();
。
在 Java 中,没有函数这样的东西。它们都是方法。IE
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();
}
}