范例:继承的应用:

定义一个数组类,要求包含构造方法,增加数据,输出数据的成员方法,并利用数组实现动态内存的分配,

在此基础上定义以下子类:

1)排序类,实现排序。

2)反转类,实现数据反向存放。

分析

本程序要求数组实现动态的内存分配,也就是说里面数组大小是由程序外部决定的。即根据对象实例化: 类 对象=new 类(参数,参数,,);

所以应该在构造方法中,为类的数组进行初始化操作(数组大小通过构造方法里的参数代入初始化。)。

之后每次增加数据的时候都应该判断数组的内容是否已经满了。如果满了不能增加。

另外如果要增加数据的时候肯定需要一个指向可以插入的下标,用于记录插入的位置。

class Array{        // 表示数组
    private int temp[] ;        // 整型数组
    private int foot ;    // 定义添加位置
    public Array(int len){
        if(len>0){
            this.temp = new int[len] ;
        }else{
            this.temp = new int[1] ;    // 最少维持空间是1个
        }
    }
    public boolean add(int i){    // 增加元素
        if(this.foot<this.temp.length){    // 还有空间
            this.temp[foot] = i ;    // 增加元素
            this.foot ++ ;// 修改脚标
            return true ;
        }else{
            return false ;
        }
    }
    public int[] getArray(){
        return this.temp ;
    }
};
class SortArray extends Array{    // 排序类
    public SortArray(int len){
        super(len) ;
    }
    public int[] getArray(){    // 覆写方法
        java.util.Arrays.sort(super.getArray()) ;    // 排序操作
        return super.getArray() ;
    }
};
class ReverseArray extends Array{    // 反转操作类
    public ReverseArray(int len){
        super(len) ;
    }
    public int[] getArray() {
        int t[] = new int[super.getArray().length] ;    // 开辟一个新的数组
        int count = t.length - 1 ;
        for(int x=0 ;x<t.length;x++){
            t[count] = super.getArray()[x] ;    // 数组反转
            count-- ;
        }
        return t ;
    }
};
public class ArrayDemo{
    public static void main(String args[]){
        // ReverseArray a = null ;    // 声明反转类对象
        // a = new ReverseArray(5) ;    // 开辟5个空间大小
        SortArray a = null ;
        a = new SortArray(5) ;
        System.out.print(a.add(23) + "\t") ;
        System.out.print(a.add(21) + "\t") ;
        System.out.print(a.add(2) + "\t") ;
        System.out.print(a.add(42) + "\t") ;
        System.out.print(a.add(5) + "\t") ;
        System.out.print(a.add(6) + "\t") ;
        print(a.getArray()) ;

    }
    public static void print(int i[]){    // 输出数组内容
        for(int x=0;x<i.length;x++){
            System.out.print(i[x] + "、") ;
        }
    }
};

充分利用了继承,继承了父类的方法,利用了覆盖,利用了super关键字调用父类方法属性。

时间: 2024-07-30 13:24:15

范例:继承的应用:的相关文章

《Java Web开发实战经典》.(李兴华).[PDF]pdf

下载地址:网盘下载 内容简介  · · · · · · <Java开发实战经典(名师讲坛)>是一本综合讲解Java核心技术的书籍,在书中使用大量的代码及案例进行知识点的分析与运用,并且给出一些比较成熟的开发步骤,帮助读者更好地进行Java的开发.从作者多年的Java培训经验来看,大部分学生对各种高端开发都没有任何问题,唯一的问题在于Java基础并不牢固,而且在国内也始终没有一本真正可以引领读者入门的好书籍,大部分的书籍都是围绕概念本身进行讲解的,没有讲解清楚为什么要具备这些知识以及该如何去理解

C++ 继承和派生 及 学生管理范例

1.概念 继承:在定义一个新的类B时,如果该类与某个已知类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为一个派生类(也称子类). 派生类是通过对基类进行修改和扩充得到的.在派生类中,可以扩充新的成员变量和成员函数. 派生类一经定义后,可以独立使用,不依赖于基类. 派生类拥有基类的全部成员函数和成员变量,不论是private,protected 还是 public 在派生类的各个成员函数中,不能访问基类中的private成员. 2.需要继承机制的例子 - 学生管理系统

javascript中类式继承和原型式继承的实现方法和区别

在所有面向对象的编程中,继承是一个重要的话题.一般说来,在设计类的时候,我们希望能减少重复性的代码,并且尽量弱化对象间的耦合(让一个类继承另一个类可能会导致二者产生强耦合).关于“解耦”是程序设计中另一个重要的话题,本篇重点来看看在javascript如何实现继承. 其它的面向对象程序设计语言都是通过关键字来解决继承的问题(比如extend或inherit等方式).但是javascript中并没有定义这种实现的机制,如果一个类需要继承另一个类,这个继承过程需要程序员自己通过编码来实现. 一.类式

用zrender实现工作流图形化设计(附范例代码)

公司研发的管理系统有工作流图形化设计和查看功能,这个功能的开发历史比较久远.在那个暗无天日的年月里,IE几乎一统江湖,所以顺理成章地采用了当时红极一时的VML技术. 后来的事情大家都知道了,IE开始走下坡路,VML这个技术现在早已灭绝,导致原来的工作流图形化功能完全不能使用,所以需要采用新技术来重写工作流图形化功能. 多方对比之后,决定采用zrender库来实现(关于zrender库的介绍,请看http://ecomfe.github.io/zrender/),花了一天的时间,终于做出了一个大致

封装组合继承函数

通常的组合继承模式如下 1 function Papa(){}; 2 function Child(){ 3 Papa.apply(this,arguments); 4 }; 5 Child.prototype = new Papa(); 6 Child.prototype.constructor = Child; 我们可以对这个模式进行封装 function classExtends(Class1,Class2){ Class2 = function(){ Class1.apply(this,

No2_4.接口继承多态_Java学习笔记_经典案例

1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 5 /** 6 * @title 接口继承多态的经典范例 7 * @author 作者:sunshine yaqingl 8 * @date 创建时间:2016年7月6日 下午5:27:39 9 */ 10 11 //使用Comparable接口自定义排序 12 class Employee implements Com

Android5.0开发范例大全 读书笔记(六)

(六)与系统交互 6.1后台通知 1.关于后台通知,下面展示6种样式.值得一提的是,笔者的小米5只能显示基本样式,雷军真是良心厂商啊. 2.首先上布局xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="

《Head First Java》读书笔记——7 继承与多态

(一)继承范例 1.范例一: 1 pulic class Doctor{ 2 boolean worksAtHospital; 3 void treatPatient(){ 4 //执行检查 5 } 6 } 7 public class FamilyDoctor extends Doctor{ 8 boolean makesHouseCalls; 9 void giveAdvice(){ 10 //提出诊断 11 } 12 } 13 public class Surgeon extends Do

LINQ体验(18)——LINQ to SQL语句之视图和继承支持

视图 我们使用视图和使用数据表类似,只需将视图从"服务器资源管理器/数据库资源管理器"拖动到O/R 设计器上,自动可以创建基于这些视图的实体类.我们可以同操作数据表一样来操作视图了.这里注意:O/R 设计器是一个简单的对象关系映射器,因为它仅支持 1:1 映射关系.换句话说,实体类与数据库表或视图之间只能具有 1:1 映射关系.不支持复杂映射(例如,将一个实体类映射到多个表).但是,可以将一个实体类映射到一个联接多个相关表的视图. 下面使用NORTHWND数据库中自带的Invoices