java 陣列實現動態的記憶體分配(繼承的應用)
阿新 • • 發佈:2018-12-12
如何實現動態分配?
說白了其實就是陣列大小由外部輸入,然後在動態生成陣列。
因此在新增元素時需要判斷陣列是否已經滿員了,所以類中需要一個記錄了陣列大小的標記,這裡記為font
我以下的程式碼寫了一個Array的父類和兩個繼承自它的子類SortArray可以實現陣列排序
ReArray可以實現陣列的倒序
程式碼如下
class Array{
private int[] array;
private int foot;
public Array(int len)
{
if(len>0)
this.array=new int[len];
else
this.array= new int[1];
}
public int[] getArray() {
return array;
}
public void setArray(int[] array) {
this.array = array;
}
public int getFoot() {
return foot;
}
public void setFoot(int foot) {
this.foot = foot;
}
public void add(int number)
{
if(this.foot<this.array.length)
{
this .array[foot]=number;
this.foot++;
}
else
{
System.out.println("陣列已滿,不能新增");
}
}
}
class SortArray extends Array{
public SortArray(int len){
super(len);
}
public void sort()
{
java.util.Arrays.sort(this.getArray());
}
}
class ReArray extends Array{
public ReArray (int len)
{
super(len);
}
public void Re() {
for(int i=0;i<(super.getArray().length)/2;i++)
{
int temp=super.getArray()[i];
super.getArray()[i]=super.getArray()[super.getArray().length-i-1];
super.getArray()[super.getArray().length-i-1]=temp;
}
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Array array = new Array(5);
array.add(5);
array.add(2);
array.add(2);
array.add(2);
array.add(2);
for(int i=0;i<array.getFoot();i++)
{
System.out.println(array.getArray()[i]);
}
SortArray sort= new SortArray(4);
sort.add(2);
sort.add(3);
sort.add(2);
sort.add(2);
sort.add(2);
sort.sort();
for(int i=0;i<sort.getFoot();i++)
{
System.out.println(sort.getArray()[i]);
}
System.out.println("------------");
ReArray re= new ReArray(5);
re.add(2);
re.add(3);
re.add(2);
re.add(2);
re.add(2);
re.Re();
for(int i=0;i<re.getFoot();i++)
{
System.out.println(re.getArray()[i]);
}
}
}
總結:寫這個應用是為了練習java繼承相關的知識,通過寫這個應用我懂得了子類不能直接呼叫父類中的私有成員就算是在本類中也無法通過this呼叫繼承自父類的成員但可以呼叫本類自身所建立的成員例如
例如這樣就ok