在此示例中使用抽象类是正确且良好的Java风格吗?

时间:2014-04-11 15:49:48

标签: java heap

我在Java中实现整数堆数据结构。但是,我想实现两种堆:最小堆和最大堆。我正在考虑做以下事情:

abstract class Heap {

      private int data[]; //the heap implemented using an array
      private int size; //how large of a heap
      private int numberOfElements; //how many items currently in the heap

      public Heap( int size ) {

            this.size = size;
            this.data = new int[ size + 1 ];
            this.numberOfElements = 0;
      }

      public abstract void insert( int data );

      public abstract void delete( int data );

}

然后我要制作两个派生类

class MinHeap extends Heap {

      //call super() and use the three data fields above
      //of course here I will add the abstract methods insert and delete
      //and code them according to the min heap specifications
}

 class MaxHeap extends Heap {

      //call super() and use the three data fields above
      //of course here I will add the abstract methods insert and delete
      //and code them according to the maxheap specifications

}

这会被认为是好的,好的,中性还是坏的风格?我对基本的面向对象设计技术比较陌生。我首先想的是让Heap成为一个接口,但是无论我创建什么类型的堆,我都希望它始终是一个数据数组,一个大小和一个numberOfElements变量,所以我认为这可能是最好的实现作为一个抽象类。我想创建可重用的通用代码。另外,我知道在这种情况下,我不是使用int数组,而是使用Comparable数组。

1 个答案:

答案 0 :(得分:4)

您必须将基类中字段的访问修饰符更改为protected(或者在建议的下方注释中添加Jamey)添加getter和setter。除此之外,你已经以正确的方式完成了它。