JAVA继承与覆写
实例:数组操作
首先是开发一个整型数组父类,要求从外部控制数组长度,并实现保存数据以及输出。然后子类中实现排序和反转。
基础父类代码如下:
1 class Array { 2 private int data [] ; 3 private int foot ; 4 public Array(int len ) { 5 if (len > 0 ) { //至少有元素 6 this.data = new int [len] ; 7 } else { 8 this.data = new int [1] ; 9 } 10 } 11 public boolean add(int num ){ 12 if (this.foot < this.data.length){ //有空间 13 this.data[this.foot ++] = num ; //保存数据 14 return true ; //保存成功 15 } 16 return false ; //保存失败 17 } 18 public int [] getData(){ 19 return this.data ; 20 } 21 } 22 public class Test1{ 23 public static void main (String args[]){ 24 Array arr = new Array(3); 25 System.out.println(arr.add(10)) ; 26 System.out.println(arr.add(20)) ; 27 System.out.println(arr.add(30)) ; 28 System.out.println(arr.add(100)) ; 29 System.out.println(arr.add(200)) ; 30 int [] temp = arr.getData() ; 31 for (int x = 0 ; x < temp.length ; x++ ){ 32 System.out.println(temp[x]); 33 } 34 } 35 }
创建第一个子类,排序
1 class Array { 2 private int data [] ; 3 private int foot ; 4 public Array(int len ) { 5 if (len > 0 ) { //至少有元素 6 this.data = new int [len] ; 7 } else { 8 this.data = new int [1] ; 9 } 10 } 11 public boolean add(int num ){ 12 if (this.foot < this.data.length){ //有空间 13 this.data[this.foot ++] = num ; //保存数据 14 return true ; //保存成功 15 } 16 return false ; //保存失败 17 } 18 public int [] getData(){ 19 return this.data ; 20 } 21 } 22 //定义一个排序数组的子类 23 class SortArray extends Array { 24 public SortArray(int len) { 25 super(len); 26 } 27 //因为父类中getData()不能排序,故此处采用覆写进行扩展 28 public int [] getData(){ 29 java.util.Arrays.sort(super.getData()) ; 30 return super.getData() ; 31 } 32 } 33 public class Test1{ 34 public static void main (String args[]){ 35 SortArray arr = new SortArray(3); 36 System.out.println(arr.add(56)) ; 37 System.out.println(arr.add(77)) ; 38 System.out.println(arr.add(29)) ; 39 System.out.println(arr.add(100)) ; 40 System.out.println(arr.add(200)) ; 41 int [] temp = arr.getData() ; 42 for (int x = 0 ; x < temp.length ; x++ ){ 43 System.out.println(temp[x]); 44 } 45 } 46 }
创建第二个子类,反转
1 class Array { 2 private int data [] ; 3 private int foot ; 4 public Array(int len ) { 5 if (len > 0 ) { //至少有元素 6 this.data = new int [len] ; 7 } else { 8 this.data = new int [1] ; 9 } 10 } 11 public boolean add(int num ){ 12 if (this.foot < this.data.length){ //有空间 13 this.data[this.foot ++] = num ; //保存数据 14 return true ; //保存成功 15 } 16 return false ; //保存失败 17 } 18 public int [] getData(){ 19 return this.data ; 20 } 21 } 22 //定义一个排序数组的子类 23 class SortArray extends Array { 24 public SortArray(int len) { 25 super(len); 26 } 27 //因为父类中getData()不能排序,故此处采用覆写进行扩展 28 public int [] getData(){ 29 java.util.Arrays.sort(super.getData()) ; 30 return super.getData() ; 31 } 32 } 33 //定义一个反转数组的子类 34 class ReverseArray extends Array{ 35 public ReverseArray(int len) { 36 super(len ); 37 } 38 public int [] getData() { 39 int center = super.getData().length / 2 ; 40 int head = 0 ; 41 int tail = super.getData().length - 1 ; 42 for (int x = 0; x < center ; x ++ ){ 43 int temp = super.getData()[head] ; 44 super.getData()[head] = super.getData()[tail] ; 45 super.getData()[tail] = temp ; 46 head ++ ; 47 tail -- ; 48 } 49 return super.getData() ; 50 } 51 } 52 public class Test1{ 53 public static void main (String args[]){ 54 ReverseArray arr = new ReverseArray(3); 55 System.out.println(arr.add(56)) ; 56 System.out.println(arr.add(77)) ; 57 System.out.println(arr.add(29)) ; 58 System.out.println(arr.add(100)) ; 59 System.out.println(arr.add(200)) ; 60 int [] temp = arr.getData() ; 61 for (int x = 0 ; x < temp.length ; x++ ){ 62 System.out.println(temp[x]); 63 } 64 } 65 }