zoukankan      html  css  js  c++  java
  • 综合实战-数组操作03(反转子类)

    反转类的最终要求是保证客户端的操作习惯不改变,也就是父类的方法名称继续保留
    开发反转类

    class Array{
    	private int data[]; // 定义一个数组
    	private int foot ; // 数组的操作脚标
    	public Array(int len){ // 构造本类对象时需要数组长度
    		if(len > 0){
    			this.data = new int [len]; // 开辟一个数组
    		}else{
    			this.data = new int [1]; // 维持一个元素的大小
    		}
    	}
    	public boolean add(int num){
    		if(this.foot < this.data.length){ // 有空间保存数据
    			this.data[this.foot++] = num; // 保存数据
    			return true; // 保存成功
    		}
    		return false; // 保存失败
    	}
    	public int [] getData(){
    		return this.data;
    	}
    }
    
    // 定义一个排序数据的子类
    class SortArray extends Array{
    	// Array里面没有无参构造方法
    	public SortArray(int len){
    		// 这样父类中的data数组就可能初始化
    		super(len); //明确调用父类的有参构造
    	}
    	// 因为父类中getData()方法不多当前类使用,但能需要保留此方法
    	// 使用覆写的概念来将此方法的功能扩充
    	public int [] getData(){
    		java.util.Arrays.sort(super.getData()); // 排序
    		return super.getData();
    	}
    }
    class ReverArray extends Array{
    	public ReverArray(int len){
    		super(len);
    	}
    	public int [] getData(){
    		int center = super.getData().length / 2;
    		int head = 0;
    		int tail = super.getData().length -1 ;
    		for (int x = 0; x < center;x++){
    			int temp = super.getData()[head];
    			super.getData()[head] = super.getData()[tail];
    			super.getData()[tail] = temp;
    			head ++;
    			tail --;
    		}
    		return super.getData();
    	}
    }
    public class testDemo{
    	public static void main(String args[]){
    		ReverArray arr = new ReverArray(3);
    		System.out.println(arr.add(10));
    		System.out.println(arr.add(20));
    		System.out.println(arr.add(30));
    		int [] temp = arr.getData();
    		for (int i=0; i<temp.length;i++){
    			System.out.println(temp[i]);
    		}
    
    	}
    }
    


    依然保持方法功能不改变
    总结
    1.子类的功能就是根据特殊的情况进行父类功能的扩充
    2.子类扩充的时候尽量以父类定义的方法名称为主,可以根据实际情况进行方法的覆写

  • 相关阅读:
    Excel导出失败的提示
    C#中将一个引用赋值null的作用
    POJ2112Optimal Milking(二分法+floyd最短+网络流量)
    三年流水账
    OpenCV(C++接口)学习笔记1-图像读取、显示、保存
    thinkphp3.2 代码生成并点击验证码
    8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】
    如何系统地学习JavaScript
    HDU 3065 病毒在继续 (AC自己主动机)
    使用Canvas和Paint自己绘制折线图
  • 原文地址:https://www.cnblogs.com/anyux/p/11904024.html
Copyright © 2011-2022 走看看