是否有一个java方法的名称被认为是与任何特定类分开的?

是否有一个java方法的名称被认为是与任何特定类分开的?,java,oop,methods,terminology,Java,Oop,Methods,Terminology,这是一个术语问题,很难问 让我举个例子。假设我正在编写一个符号微分算法。我有一个抽象类Exp,它是一组表达式类型(和、积分等)的超类。有一个抽象的方法导数,因此e.derivative()应该是表达式e的导数。Exp的所有具体子类(这里想象一个完整的层次结构)都实现了一个派生方法,该方法获取了如何区分该类型表达式的知识。给定的方法通常通过组合子表达式的导数来计算表达式的导数 这个例子的细节并不重要。重要的是,所有这些分散的方法都可以看作是一个(递归)算法的一部分。并非所有方法都是如此,但许多方法

这是一个术语问题,很难问

让我举个例子。假设我正在编写一个符号微分算法。我有一个抽象类Exp,它是一组表达式类型(和、积分等)的超类。有一个抽象的方法导数,因此e.derivative()应该是表达式e的导数。Exp的所有具体子类(这里想象一个完整的层次结构)都实现了一个派生方法,该方法获取了如何区分该类型表达式的知识。给定的方法通常通过组合子表达式的导数来计算表达式的导数

这个例子的细节并不重要。重要的是,所有这些分散的方法都可以看作是一个(递归)算法的一部分。并非所有方法都是如此,但许多方法都是如此(使用重载为根本不同的操作重用相同的方法名被认为是一个坏主意)。问题是,作为单一函数的“导数”一词是什么?这不是一种方法;在另一种语言中,它将是一个函数,各种子句(如何处理和,如何处理积分)将位于同一个位置。我不在乎哪种方法或语言更好,也不在乎这种风格是否可以在Java中使用。我只想知道“导数”作为单个函数或过程使用什么术语(其思想不仅限于函数编程,递归也不是一个关键特性)。当我告诉别人我今天做了什么时,我想说:“我试图实现一个象征性的差异<强> <强>,但是我认为的每一个算法都不起作用。
我想其他OO语言也会遇到同样的问题,但Java是我最熟悉的语言。我对它非常熟悉,所以我非常确定没有标准术语,但我想在得出结论之前,我会询问我们这里的专家组。

我不确定这是否是您想要的,但我想我可以用设计模式术语来回答这个问题。你的例子听起来有点像GoF。这是一个听起来像“正常”的。

。子类/实现完成了这项工作,但接口是在基类型中定义的。这种“分散”方法与(“与Java获得的一样好”)或模式匹配(不在Java中)或大型manky switch/if-else控制器形成对比。我不确定我是否真的会把它称为聚合

附录:你可能会发现一本好书。特别是,关于“列”与“行”组织以及每种方法的“位置差异”的评论有:

…在OO中,按行划分。每行是一个模块,称为类。与该数据变量相关的所有函数都分组在一起。这是一种合理的组织方式,而且非常普遍。优点是很容易添加数据变量。。。然而,缺点是很难添加因数据类型而异的新函数。您必须遍历每个类才能添加新方法


相反,我认为“方法”是Java上下文中的标准术语。

多态函数可以应用于不同类型的值。该函数可以由多个Java方法实现。

在我看来,“方法”是正确的术语。所有“派生”调用都是Exp.derivative()方法的实现,因此也是方法本身的实现。我想我没有说清楚。首先,我非常了解Java的机制和标准Java术语。像“子类型多态性”这样的术语(如下面pst的回答)不能满足我的要求。我想要一个派生函数的名称,它被认为是定义它的所有方法(Exp类中的方法和Exp子类中的方法)的集合。显然,“函数”这个词会很好地工作。问题是在现有的用法中是否有其他术语填补了这一空缺。我喜欢这个答案,因为它(策略模式)显示/允许多态性发挥作用,但保持函数相对于包含它们的对象的“纯粹”。如果正在查找“模式名”,则很可能就是它。