属性的覆盖

子类定义了与父类完全相同的属性名称是,称为属性的覆盖

父类: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 }

 

posted @ 2019-04-11 23:48  一博之主  阅读(277)  评论(0)    收藏  举报