數組操作 (繼承的理解)
阿新 • • 發佈:2019-02-18
繼續 rgs lean span out mil println class per
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 }
數組操作 (繼承的理解)