/* 1). 父类的设计很重要,父类中的方法必须要有意义
2). 子类定义的时候就应该已经可以明确该类的功能是什么
3). 如果子类在进行操作中发现父类的方法不好用了,优先考虑覆写方法,而不是重新创建一个方法
*/
public class LianXi{
public static void main(String[]args){
SortArray arr=new SortArray(5);
System.out.println(arr.add(4311));
System.out.println(arr.add(4598));
System.out.println(arr.add(0422));
System.out.println(arr.add(8543));
System.out.println(arr.add(7711));
arr.inc(3);
System.out.println(arr.add(9544));
System.out.println(arr.add(3868));
System.out.println(arr.add(7007));
//int[] temp =arr.getData(); 调用反转方法时需要注意重复调用
for(int x=0;x<arr.getData().length;x++){
System.out.print(arr.getData()[x]+"/");
}
}
}
class Array{
private int [] data;
private int foot;
public Array(int len){ //通过外部传入数组长度
if(len<=0){
this.data=new int[1];
}else{
this.data=new int[len];
}
}
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 void inc(int size){// 修改数组长度
if(size>0){
int[] newData=new int[this.data.length+size];
System.arraycopy(this.data,0,newData,0,this.data.length);
this.data=newData;
}
}
}
class SortArray extends Array{//排序子类
public SortArray(int len) {
super(len);
// TODO Auto-generated constructor stub
}
public int[] getData(){
java.util.Arrays.sort(super.getData());
return super.getData();
}
}
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();
}
}