要求
- 定義一個數組操作類(Array類),在這個類裏面可以進行整型數組的操作;
- 由外部類傳入數組的大小,實現數據的保存以及數據的輸出;
- 在這個類派生出兩個子類:
- 排序類:通過此類取得的數據可以進行排序;
- 反轉類:通過此類取得的數組數據要求採用倒序的輸出。
1. 開發數據的父類
範例:基礎實現
class Array {
private int data[];
private int foot ;
public Array(int len) {
if (len > 0) {
this.data = new int[len];
} else {
this.data = new int[1];
}
}
public boolean add(int num) {
if (this.foot < this.data.length) {
this.data[this.foot ++] = num;
return true;
}
return false;
}
public int[] getData() {
return this.data;
}
}
public class ArrayDemo {
public static void main(String[] args) {
Array arr = new Array(3);
System.out.print(arr.add(10) + " ");
System.out.print(arr.add(20) + " ");
System.out.print(arr.add(30) + " ");
System.out.println(arr.add(30) + " ");
int[] temp = arr.getData();
for (int x = 0; x < temp.length ; x++) {
System.out.print(temp[x] + " ");
}
System.out.println();
}
}
運行結果
2. 開發排序類
//定義一個排序數組的子類
class SortArray extends Array {
//Array類裏面現在沒有無參構造方法
public SortArray(int len) {
//初始化父類中的data數組
super(len); //調用父類的有參構造
}
//因爲父類中的getData()方法不夠當前使用,但是又需要保留這個方法名稱
//所以使用重寫的概念
public int[] getData() {
java.util.Arrays.sort(super.getData()); //排序
return super.getData();
}
}
注意:開發思路
- 不改變客戶端已有的方法;
- 子類的方法功能,父類方法不能實現,所以必須重寫父類方法。
3. 開發反轉類
//定義反轉類
class ReverseArray extends Array {
public ReverseArray(int len) {
super(len);
}
public int[] getData() {
int center = super.getData().length/2;
int head = 0;
int tail = super.getData().length-1;
for (int x = 0 ; x < center ; x++) {
int temp = super.getData()[head];
super.getData()[head] = super.getData()[tail];
super.getData()[tail] = temp;
head++;
tail--;
}
return super.getData();
}
}
4. 總結
- 子類的功能就是根據特殊的情況進行父類的擴充;
- 子類擴充方法的時候儘量以父類定義的方法名稱爲主,可以根據實際情況進行方法重寫。