关键词搜索

源码搜索 ×
×

(Java)继承的应用

发布2020-01-06浏览670次

详情内容

一、要求:

定义一个整型数组类,要求包含构造方法,增加数据及输出数据成员方法,并利用数组实现动态分配。
同时定义:(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] + "、");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载