第21章:數組操作綜合案例

/*

    Array
-int data[]
-int foot
+Array(int len)
+add(int num)  boolean 
+getData()  int[]
+inc(int size) void


*/




class Array{
  private int data[];
  private int foot;
  public Array(int len){
    if(len<=1){
      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的,調用外部的屬性,則要進行一個當前對象屬性的調
//用
      this.data=newData;改變引用
      }
 }
}



class SortArray extends Array{
  public SortArray(int len){
  super(len);
  }
  public int[] getData(){
    java.util.Arrays.sort(super.getData());
    return super.getData();
  }
}


public class TestDemo{
  public static void main(String args[]){
  SortArray arr = new SortArray(5);//開始有五個元素
  System.out.println(arr.add(90));
  System.out.println(arr.add(10));
  System.out.println(arr.add(100));
  System.out.println(arr.add(65));
  System.out.println(arr.add(7));
  arr.inc(3);
  System.out.println(arr.add(70));
  System.out.println(arr.add(15));
  System.out.println(arr.add(6));
  for(int x=0;x<arr.getData().length;x++){
    System.out.println(arr.getData()[x]+"、");
    
  }
  
  }


}

反轉函數

class ReverseArray extends Array{
  public ReverseArray(int len){
  super(len);
  }
@Override
public int[] getData(){
  int center = super.getData().length/2; //跳過本類調用父類的方法得到數組長度的中位數
  int head=0;
  int tail=super.getData().length-1;  //先在for循環外定義數組下標
  for(x=0;x<center;x++){ 
    int temp=super.getData()[head];
    super.getData()[head]=super.getData()[tail];
    super.getData()[tail]=temp;
    head++;
    temp--;
    }
 }
}

//總結  :反轉類的循環次數center,數組的下標head,tail,中間暫存值temp

總結:

1.面向對象的編程,父類的設計非常重要,每個方法都要有意義

2.子類定義的時候就應該可以明確該類的功能是什麼

3.如果子類在工作中發現該類的方法不好用了,優先考慮override而不是重寫一個方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章