这个Java代码是什么意思?

时间:2010-11-17 02:05:58

标签: java abstract-class

首先,我不是要求任何人做我的作业。我只是对这个Java语法感到困惑。

下面是作业描述和我必须实现的两个类。第一个仅供参考。 第二个是我遇到麻烦的那个。

  

能够用(理论上)具有最大值的数字编程是计算机科学的许多应用中的必要条件。您将编写一系列类来开始此任务。您的最后一堂课将允许您表示并至少添加任意长度的二进制数。

// You are to write (implement) this class exactly as dictated by the following list of class members.
public abstract AbstractBit: 

  private boolean bit;

  public abstract AbstractBit clone(); 
  public abstract AbstractBit addBits(AbstractBit guest);
  public abstract AbstractBit addBits(AbstractBit guest1, AbstractBit guest2);
  public abstract AbstractBit carryBit(AbstractBit guest);
  public abstract AbstractBit carryBit(AbstractBit guest1, AbstractBit guest2);

  protected void setBit(boolean value)

  public boolean getBit()

  public AbstractBit()

  public AbstractBit(boolean value)

  public AbstractBit(AbstractBit guest)

  public boolean equals(AbstractBit guest)

  public String toString()

这些是什么?

为什么要添加BinaryBit类型的静态类变量?这不是以某种方式递归吗? (参见标有????

的行
// You are to write (implement) this class exactly as dictated by the following list of class members.
public BinaryBit extends AbstractBit: 

  public static final BinaryBit zero = new BinaryBit(false);  // ????
  public static final BinaryBit one = new BinaryBit(true);    // ????

  public BinaryBit()

  public BinaryBit(boolean bit)

  public BinaryBit(int bit)

  public BinaryBit(BinaryBit guest)

  public BinaryBit clone()

  public boolean equals(BinaryBit guest)

  public String toString()

  public AbstractBit addBits(AbstractBit guest)

  public AbstractBit addBits(AbstractBit guest1, AbstractBit guest2)

  public AbstractBit carryBit(AbstractBit guest)

  public AbstractBit carryBit(AbstractBit guest1, AbstractBit guest2)

5 个答案:

答案 0 :(得分:5)

这是仅在存在有限数量的实例时使用的技术。它们都被声明,然后被称为常量。传统的做法是将它们称为ZERO和ONE,使其更加明显,它们是常量。它实际上不是递归的,因为静态变量只创建一次。

答案 1 :(得分:3)

一个位只有两个可能的值 - 零和一。任何给定的零或一个都与其他任何一个一样好。因此,为什么不创建一个“罐装”,不可更改的零和一个值,并只是传递对这些值的引用?它节省了内存和处理器时间。您可能会看到此方法称为Flyweight pattern

您可以在Java自己的BigInteger课程中看到一些该模式,其中包含常见数字的预定义值,例如ZEROONETEN

答案 2 :(得分:0)

因为位只能有两个值,1和0,所以您要创建对表示这些值的对象的静态引用。每次需要表示1或0时,它比创建新对象更有意义。

答案 3 :(得分:0)

不,这不是递归的。它只是意味着类的静态初始化将创建自己的实例。在创建实例之前,字段为空,但除非您在构造函数中使用zeroone,否则这应该是一个没有实际意义的点。

答案 4 :(得分:0)

零和一种是预定义可在代码中使用的模板的方法。另一个例子是String.empty,它是一个空字符串的实例化,这样你就可以做if(“”== String.empty)之类的事情。它只是让你的代码更具可读性。