/*
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而不是重寫一個方法