【问题标题】:What is a Degenerate Class?什么是退化类?
【发布时间】:2011-07-25 01:25:14
【问题描述】:

因为还没有人问,我还没找到合适的答案;简单地说:什么是退化类?

各种语言的示例会很有帮助...除了 UML。 :P

【问题讨论】:

  • “degenerate class”(不考虑引号)的第一个 Google 搜索结果是 -drumroll- 这个问题。
  • 那我们最好写一些好的答案
  • UML 唯一缺少的有用之处就是编译器。哦,等待简单而一致地写作。 :)
  • 查看第一个谷歌结果 - 祝你好运摆脱那个循环
  • 如果我继续点击“degenerate class”的第一个 Google 搜索结果的链接,我会出现堆栈溢出...

标签: oop class language-agnostic


【解决方案1】:

我也在寻找一个明确的答案,这是我到目前为止从谷歌那里得到的理解:

在数学中,退化表示极限情况,在这种情况下,一类对象改变其性质以属于另一个通常更简单的类

  • 当半径接近 0 时,该点是圆的退化情况
  • 当偏心率接近 0 时,圆是椭圆的退化形式

在编程中,遵循这种“折叠”为更简单的概念,退化似乎以多种方式使用:

1。一个没有方法或只有一个主要方法的类:

Big Java:

最后,您已经看到了只有一个 main 方法的类。他们的唯一目的是启动一个程序。从设计的角度来看,这些都是一些退化的类示例。

有效的 Java 第 2 版:

第 14 项:在公共类中,使用访问器方法,而不是公共字段

有时,您可能会想编写退化的类 除了对实例字段进行分组之外,没有其他用途:

// Degenerate classes like this should not be public!
class Point {
  public double x;
  public double y;
}

2。一个具有较少特异性的类,使其表现得像另一个更简单的类:

Learning Java:

例如,List 和 List 类共享普通的旧 Java 类 List。 List 被称为泛型类的原始类型。每个泛型都有一个原始类型。 它是一种退化的“普通”Java 形式,其中所有泛型类型信息都已被删除,类型变量被通用 Java 类型(如 Object)所取代。 p>

有效的 Java 第 2 版:

// The worst possible legal hash function - never use!
@Override public int hashCode() { return 42; }

这是合法的,因为它确保相等的对象具有相同的哈希码。这很糟糕,因为它确保每个对象都具有相同的哈希码。因此,每个对象都散列到同一个桶中,散列表退化为链表

3。最简单、最空的类实例:

大 Java:

但是,有时您会遇到处理退化输入的哲学问题:空字符串、没有区域的形状等等。

【讨论】:

    【解决方案2】:

    来自here,我猜测这是一个没有行为(即没有方法)的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多