属性的覆盖
子类定义了与父类完全相同的属性名称是,称为属性的覆盖
父类:String info = "hello "
子类:int info = 100;
在开发中类中的属性必须封装,这样的覆盖没有意义,父类的私有属性子类看不见

案例:要求定义一个整形数组的操作类,数组大小由外部决定,用户可以向数组中增加数据,以及取得数组中的全部数据,在这要求上派生出2个子类。
排序类:取得数组数据可以进行排序
反转类:取得数据要求采用倒序的方式进行输出
首先不要考虑子类
先写数组的父类:
1 class Array { 2 private int data[];//1.数组大小由下面构造方法传递 3 private int foot; 4 public Array(int len){//2. 构造本类对象时需要设置大小 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 StringDemo1 { 23 public static void main(String args[]){ 24 Array arr = new Array(3); 25 System.out.println(arr.add(20)+";"); 26 System.out.println(arr.add(30)+";"); 27 System.out.println(arr.add(40)+";"); 28 int [] temp = arr.getData(); 29 for(int i= 0;i<temp.length;i++){ 30 System.out.println(temp[i]+","); 31 } 32 } 33 }
开发完之后设计子类,要取得数据是以排序的形式返回,其他操作与Array类没有区别
1 class Array { 2 private int data[]; 3 private int foot; 4 5 public Array(int len) { 6 if (len > 0) { 7 this.data = new int[len]; 8 } else { 9 this.data = new int[1]; 10 } 11 } 12 public boolean add(int num){ 13 if (this.foot < this.data.length) { 14 this.data[this.foot++]=num ; 15 return true; 16 } else { 17 return false; 18 } 19 } 20 public int [] getData(){ 21 return this.data; 22 } 23 } 24 class SortArray extends Array{ 25 public SortArray(int len){ 26 super(len); 27 } 28 public int [] getData() { 29 java.util.Arrays.sort(super.getData()); 30 return super.getData(); 31 } 32 } 33 34 public class TestDemo4 { 35 public static void main(String aregs[]) { 36 Arra arr = new Arra(3); 37 System.out.println(arr.add(100)); 38 System.out.println(arr.add(20)); 39 System.out.println(arr.add(30)); 40 System.out.println(arr.add(220)); 41 System.out.println(arr.add(330)); 42 int [] temp =arr.getData(); 43 for (int x = 0 ; x < temp.length ; x ++){ 44 System.out.println(temp[x]); 45 } 46 } 47 48 49 }
开发反转类:同样也是要求客户端的要求不改变,父类的方法名称继续保留
1 class Array { 2 private int data[]; 3 private int foot; 4 5 public Array(int len) { 6 if (len > 0) { 7 this.data = new int[len]; 8 } else { 9 this.data = new int[1]; 10 } 11 } 12 public boolean add(int num){ 13 if (this.foot < this.data.length) { 14 this.data[this.foot++]=num ; 15 return true; 16 } else { 17 return false; 18 } 19 } 20 public int [] getData(){ 21 return this.data; 22 } 23 } 24 class SortArray extends Array{ 25 public SortArray(int len){ 26 super(len); 27 } 28 public int [] getData() { 29 java.util.Arrays.sort(super.getData()); 30 return super.getData(); 31 } 32 } 33 class ReverseArray extends Array{ 34 public ReverseArray (int leb){ 35 super(len); 36 } 37 public int [] getData(){// 需要得到的是反转数据 38 int center = super.getData().length/2; 39 int head =0; 40 int tail =super.getData().length-1; 41 for(int x =0;x <centet;x++){ 42 int temp = super.getData()[head]; 43 super.getData()[head]=super.getData()[tail]; 44 super.getData()[tail]=temp; 45 head++; 46 tail--; 47 } 48 return super.getData(); 49 } 50 } 51 public class TestDemo4 { 52 public static void main(String aregs[]) { 53 RevserseAarry = new ReverseArray(3); 54 System.out.println(arr.add(100)); 55 System.out.println(arr.add(20)); 56 System.out.println(arr.add(30)); 57 System.out.println(arr.add(220)); 58 System.out.println(arr.add(330)); 59 int [] temp =arr.getData(); 60 for (int x = 0 ; x < temp.length ; x ++){ 61 System.out.println(temp[x]); 62 } 63 } 64 65 66 }

浙公网安备 33010602011771号