什么是堕落类?

Cas*_*sey 7 language-agnostic oop class

既然没有人问过,我还没有找到合适的答案; 简单地说:什么是堕落类?

各种语言的例子会有所帮助......除了UML.:P

mal*_*rdz 8

我也在寻找一个确定的答案,这是我迄今为止从谷歌那里了解到的:

在数学中,简并性表示一种限制性情况,其中一类对象改变其性质以便属于另一种通常更简单的类.

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

在编程中,遵循"折叠"到更简单的概念,简并似乎以多种方式使用:

1.没有方法或只有主要方法的类:

大Java:

最后,您已经看到只有main方法的类.他们唯一的目的是启动一个计划.从设计的角度来看,这些是类的简单示例.

有效的Java第2版:

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

有时,您可能会想要编写简并类,除了组实例字段之外没有任何其他目的:

// Degenerate classes like this should not be public!
class Point {
  public double x;
  public double y;
}
Run Code Online (Sandbox Code Playgroud)

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

学习Java:

例如,List和List的类共享普通的旧Java类List.List被称为泛型类的原始类型.每个泛型都有一个原始类型.它是简并的"普通"Java形式,从中删除了所有泛型类型信息,并将类型变量替换为像Object这样的通用Java类型.

有效的Java第2版:

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

这是合法的,因为它确保了相等的对象具有相同的哈希码.这很糟糕,因为它确保每个对象都具有相同的哈希码.因此,每个对象都会散列到同一个存储桶,并且散列表会退化为链接列表.

3.可能的最简单,最空洞的实例:

大Java:

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