数组操作 (继承的理解)
1 class Array{//定义一个专门进行数组的操作类
2 private int data[];//定义一个整形数组,大小由外部决定
3 private int foot=0;//进行数据的角标操作
4 public Array(int len){//如果要想使用Array类必须设置数组大小
5 if(len>0){
6 this.data=new int[len];//开辟新数组
7 }else{
8 this.data=new int[1];//开辟1个空间
9 }
10 }
11 //动态扩展。如果传入一个3,就加上
12 public void inc(int num){
13 int newData[]=new int[data.length+num];
14 System.arraycopy(this.data,0,newData,0,this.data.length);
15 this.data=newData;//改变原始数组指向
16
17 }
18 //该方法主要的功能是向数组里面的数据的保存
19 public boolean add(int num){
20 if(this.foot>=this.data.length){
21 return false;
22 }
23 //先进行数组的数据保存,而后foot的内容加1
24 this.data[this.foot++]=num;
25 return true;
26 }
27 public int[] getData(){
28 return this.data;//返回数组内容
29 }
30 }
31 //这样可以获取父类的方法
32 class sortArray extends Array{
33 public sortArray(int num){
34 super(num);//父类中支持数组创建了
35 }
36 //父类中的取得数据的方法名称很标准,但是功能不足,又希望继续使用这个方法名称,那么就需要对
37 //方法进行扩充,扩充就是方法覆写,
38 public int[] getData(){
39 java.util.Arrays.sort(super.getData());
40 return super.getData();//引用传递
41 }
42 }
43 class ReverseArray extends Array{
44 //必须知道数组大小
45 public ReverseArray(int len){
46 super(len);
47 }
48 public int[] getData(){
49 int center=super.getData().length/2;
50 int head=0;
51 int tail=super.getData().length-1;
52 for(int x=0;x<center;x++){
53 int temp=super.getData()[head];
54 super.getData()[head]=super.getData()[tail];
55 super.getData()[tail]=temp;
56 head++;
57 tail--;
58 }
59 return super.getData();
60 }
61 }
62 public class Newbegin{
63 public static void main(String args[]) {
64 ReverseArray arr=new ReverseArray(5);
65 System.out.println(arr.add(3));
66 System.out.println(arr.add(1));
67 System.out.println(arr.add(2));
68 System.out.println(arr.add(8));
69 System.out.println(arr.add(6));
70 arr.inc(3);//扩充数组
71 System.out.println(arr.add(10));
72 System.out.println(arr.add(20));
73 System.out.println(arr.add(30));
74
75 for(int x=0;x<arr.getData().length;x++){
76 System.out.println(arr.getData()[x]);
77 }
78 }
79 }