数组操作 (继承的理解)

 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 } 

 

转载于:https://www.cnblogs.com/Tony98/p/10397942.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值