(Java)继承的应用

一、要求:

定义一个整型数组类,要求包含构造方法,增加数据及输出数据成员方法,并利用数组实现动态分配。
同时定义:(1)排序类:实现排序;(2)反转类:实现数据反向存放;

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

数组的动态分配:
在这里插入图片描述

二、代码实现

  1. 测试反转类
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;//此处返回的是一个数组,在声明处已经写出了返回的数组类型
    }
};
class ReverseArray extends Array{ //定义数组及翻转类
    public ReverseArray(int len){//设置数组大小
        super(len);//调用父类构造
    }
    public int[] getArray(){ //覆写getArray方法
        int center = super.getArray().length/2;//取得中间索引
        int head =0;//头部索引
        int tail = super.getArray().length - 1;//尾部索引
        for(int x=0;x<center;x++){//循环交换数据
            int temp = super.getArray()[head];
            super.getArray()[head] = super.getArray()[tail];
            super.getArray()[tail] = temp;
            head++;
            tail--;
        }
        return super.getArray();//返回数组内容
    }
}
class SortArray extends Array{//数组排序子类
    public SortArray(int len){
        super(len);
    }
    public int[] getArray(){
        java.util.Arrays.sort(super.getArray());//数组排序处理
        return super.getArray();//返回排序后的数组
    }
}
public class Test{
    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] + "、");
        }
    }
}

在这里插入图片描述

  1. 测试排序类
public class Test{
    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] + "、");
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值