Java: Implementation of Interfaces and abstract classes
我正在尝试构建一个程序,在该程序中,我可以在对int数组进行排序时对其进行可视化表示。有两种不同的搜索算法可供选择。所有功能都分为类、接口和抽象类。我的主要问题是从一件事到下一件事获取数据。
我的主类实现了基本的窗口功能。绘制窗口,几个选择搜索算法的按钮,提供一个文本字段来输入数组,并在其中心显示数组的条形图可视化。在扩展
现在我有了一个名为
1 2 3 4 5 | public void setUpTo( int i ); // to limit the number of swaps during the search public void setNumbers( int[] numbers ); public void sort(); public String getName(); public int getSwaps(); |
然后我有实现
告诉我需要提供哪些附加信息。
如果您将另一个方法添加到您的
1 2 3 4 5 | interface Sorter { public int[] getNumbers(); public void setNumbers(int [] numbers); //... other methods.... } |
然后,如果您在抽象的
1 2 3 4 5 6 7 8 9 10 11 12 13 | abstract class CountingSort implements Sorter{ private int [] mNumbers; @Override public int[] getNumbers() { return mNumbers; } @Override public void setNumbers(int[] numbers) { mNumbers = numbers; } } |
然后,您可以随时访问具体实现中的数字(如果设置了这些数字)。我建议在
1 2 3 4 5 6 7 8 9 | class CountingBubbleSort extends CountingSort{ public CountingBubbleSort(int [] numbers){ setNumbers(numbers); } public void someOtherMethod(){ int [] numbers = getNumbers(); } } |
在您的主类中,您可以使用继承必须提供的内容,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class MainClass { private Sorter mSorter; public void doSort(){ //Create sorter objects if(you want CountingBubbleSort){ mSorter = new CountingBubbleSort(); }else{ mSorter = new BubbleSort(); } //get the numbers int [] numbers = mSorter.getNumbers(); // do the sorting mSorter.sort(); } } |