要求
- 定义一个数组操作类(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. 总结
- 子类的功能就是根据特殊的情况进行父类的扩充;
- 子类扩充方法的时候尽量以父类定义的方法名称为主,可以根据实际情况进行方法重写。
网友评论