继承的应用实例

定义一个整型数组类,要求包含构造方法,增加数据及输出数据成员方法,并利用数组实现动态内存分配。在此基础上定义以下两个子类:

(1)排序类:对整型数组元素实现排序

(2)反转类:对整型数组元素实现反向存放

 提示:数组的2种定义:

1、 int arr[] = new int[5]        //声明数组并分配内存

2、 int arr[] = { 1,2,3,4,5 }     //数组静态初始化,赋初始值

 代码如下:

class Array{    //整型数组类
    private int temp[];
    private int foot;
    public Array(int len){  //构造方法
        if(len>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() {    //覆写父类的方法,将数组进行反转操作
        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;
    }
}

class SortArray extends Array {  //排序类
    public SortArray(int len) {
        super(len);           //调用父类构造方法
    }
    public int[] getArray() {   //覆写父类的方法,将数组进行排序操作
        java.util.Arrays.sort(super.getArray());
        return super.getArray();
    }
}

public class ExtendsApplication {
    public static void main(String[] args) {
        System.out.println("------测试数组反转------");
        ReverseArray rever = new ReverseArray(5);  //声明并实例化反转类对象,开辟5个空间
        //输出开辟空间是否成功
        System.out.print(rever.add(2) + "\t");
        System.out.print(rever.add(43) + "\t");
        System.out.print(rever.add(25) + "\t");
        System.out.print(rever.add(8) + "\t");
        System.out.print(rever.add(16) + "\t");
        System.out.print(rever.add(34) + "\t");  //第6个空间,开辟空间失败,返回false
        print(rever.getArray());
        System.out.println();
        System.out.println("------测试数组排序------");
        SortArray sort = new SortArray(6);  //声明并实例化排序类对象,开辟6个空间
        System.out.print(sort.add(2) + "\t");
        System.out.print(sort.add(10) + "\t");
        System.out.print(sort.add(9) + "\t");
        System.out.print(sort.add(32) + "\t");
        System.out.print(sort.add(16) + "\t");
        System.out.print(sort.add(7) + "\t");
        print(sort.getArray());
    }
    public static void print(int i[]) {  //输出打印数组
        for (int x=0; x<i.length; x++){
            System.out.print(i[x] + " 、");
        }
    }
}

程序运行结果:

本实例应用了继承的各个概念,包括方法覆写,子类实例化过程,可以发现继承能够提高代码的复用性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值