17 继承

子类对象在实例化之前必须首先调用父类中的构造方法,之后再调用子类自己的构造方法:

被子类覆写的方法不能拥有比父类方法更加严格的访问权限

 

关键字:this,extends,super

 

继承的应用实例:

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

a.排序类----实现排序

b.反转类----实现数据方向存放

 1 class Array{        // 表示数组
 2     private int temp[] ;        // 整型数组
 3     private int foot ;    // 定义添加位置
 4     public Array(int len){
 5         if(len>0){
 6             this.temp = new int[len] ;
 7         }else{
 8             this.temp = new int[1] ;    // 最少维持空间是1个
 9         }
10     }
11     public boolean add(int i){    // 增加元素
12         if(this.foot<this.temp.length){    // 还有空间
13             this.temp[foot] = i ;    // 增加元素
14             this.foot ++ ;// 修改脚标
15             return true ;
16         }else{
17             return false ;
18         }
19     }
20     public int[] getArray(){
21         return this.temp ;
22     }
23 };
24 class SortArray extends Array{    // 排序类
25     public SortArray(int len){
26         super(len) ;
27     }
28     public int[] getArray(){    // 覆写方法
29         java.util.Arrays.sort(super.getArray()) ;    // 排序操作
30         return super.getArray() ;
31     }
32 };
33 class ReverseArray extends Array{    // 反转操作类
34     public ReverseArray(int len){
35         super(len) ;
36     }
37     public int[] getArray() {
38         int t[] = new int[super.getArray().length] ;    // 开辟一个新的数组
39         int count = t.length - 1 ;
40         for(int x=0 ;x<t.length;x++){
41             t[count] = super.getArray()[x] ;    // 数组反转
42             count-- ;
43         }
44         return t ;
45     }
46 };
47 public class ArrayDemo{
48     public static void main(String args[]){
49         // ReverseArray a = null ;    // 声明反转类对象
50         // a = new ReverseArray(5) ;    // 开辟5个空间大小
51         SortArray a = null ;
52         a = new SortArray(5) ;
53         System.out.print(a.add(23) + "\t") ;
54         System.out.print(a.add(21) + "\t") ;
55         System.out.print(a.add(2) + "\t") ;
56         System.out.print(a.add(42) + "\t") ;
57         System.out.print(a.add(5) + "\t") ;
58         System.out.print(a.add(6) + "\t") ;
59         print(a.getArray()) ;
60 
61     }
62     public static void print(int i[]){    // 输出数组内容
63         for(int x=0;x<i.length;x++){
64             System.out.print(i[x] + "、") ;
65         }
66     }
67 };
View Code

 

posted @ 2015-02-27 11:49  闲来垂钓  阅读(148)  评论(0)    收藏  举报