实例要求
定义一个整型数组类,要求包含构造方法,增加数据及输出数据成员方法,并利用数组实现动态内存分配。在此基础上定义出以下子类:
——A、  排序类 —— 实现排序
——B、  反转类 —— 实现数据反向存放

分析

本程序要求数组实现动态的内存分配,也就是说里面的数组的大小是由程序外部决定的,则在本类的构造方法中应该为类中的数组进行初始化操作,之后的每次增加数据的时候都应该判断数组的内容是否已经是满的,如果不是满的,则可以向里面增加,如果是满的,则不能增加,另外如果要增加数据的时候则肯定需要有一个指向可以插入的下标,用于记录插入的位置

范例:继承的应用_System


 

数组类

public class Array {
	private int temp[];//定义一个整型数组,此数组大小由外部决定
	private int foot;//定义数组添加的下标
	public Array(int len){//数组的大小由外部决定
		if(len>0){//判断传入的长度是否大于 0 
			this.temp = new int[len];//根据传入的大小开辟空间
		}else{
			this.temp = new int[1];//最小维持一个空间
		}
	}
	public boolean add(int i){
		if(this.foot < this.temp.length){//判断数组是否已经满了
			this.temp[foot]=i;//没有存满则继续添加
			foot++;//修改成功
			return true;//添加成功
		}else{//数组已经存满,不能添加
			return false;//添加失败
		}
	}
	public int[] getArray(){//得到全部的数组
		return this.temp;
	}
}

 
排序数组

public class SortArray extends Array {//定义排序类
	public SortArray(int len){//调用父类中的构造方法
		super(len);//为数组开辟大小
	}
	public int[] getArray(){//覆写得到数组的方法,排序返回
		java.util.Arrays.sort(super.getArray());//排序操作
		return super.getArray();
	}
}

 

测试排序类

public class ArrayDemo02 {
	public static void main(String[] args) {
		SortArray a= null;//声明排序类对象
		a = new SortArray(5);//实例化排序类对象
		System.out.print(a.add(23)+"\t");//添加内容
		System.out.print(a.add(21)+"\t");//添加内容
		System.out.print(a.add(2)+"\t");//添加内容
		System.out.print(a.add(42)+"\t");//添加内容
		System.out.print(a.add(5)+"\t");//添加内容
		System.out.print(a.add(6)+"\n");//添加内容
		print(a.getArray());//输出内容
	}
	public static void print(int i[]){
		for(int x=0; x<i.length; x++){//循环输出数组中的内容
			System.out.print(i[x]+"、");
		}
	}
}

 

反转数组

public class ReverseArray extends Array {//定义反转类
	public ReverseArray(int len){//调用父类中的构造方法
		super(len);
	}
	public int[] getArray(){//覆写得到数组的方法,反转返回
		int t[] = new int[super.getArray().length];
		int count = t.length -1;//数组的下标,倒序开始
		for(int x=0; x < t.length; x++){
			t[count] = super.getArray()[x];//数组反转
			count--;
		}
		return t;
	}
}

 

测试反转类

public class ArrayDemo01 {
	public static void main(String[] args) {
		ReverseArray a= null;//声明反转类对象
		a = new ReverseArray(5);//实例化反转类对象
		System.out.print(a.add(23)+"\t");//添加内容
		System.out.print(a.add(21)+"\t");//添加内容
		System.out.print(a.add(2)+"\t");//添加内容
		System.out.print(a.add(42)+"\t");//添加内容
		System.out.print(a.add(5)+"\t");//添加内容
		System.out.print(a.add(6)+"\n");//添加内容
		print(a.getArray());//输出内容
	}
	public static void print(int i[]){
		for(int x=0; x<i.length; x++){//循环输出数组中的内容
			System.out.print(i[x]+"、");
		}
	}
}