我在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
数组。
答案 0 :(得分:4)
您必须将基类中字段的访问修饰符更改为protected
(或者在建议的下方注释中添加Jamey)添加getter和setter。除此之外,你已经以正确的方式完成了它。