Java基础篇:如何应用接口?

本文探讨了Java中的接口如何用于实现多态。通过实例展示了如何定义一个IntStack接口,以及如何用FixedStack和DynStack两个类分别实现固定大小和动态增长的整数堆栈。通过接口引用,程序在运行时可以灵活地调用不同实现的push()和pop()方法,实现了运行时多态。
摘要由CSDN通过智能技术生成

为理解接口的功能,让我们看一个更实际的例子。我们曾开发过一个名为Stack的类,该类实现了一个简单的固定大小的堆栈。然而,有很多方法可以实现堆栈。例如,堆栈的大小可以固定也可以不固定。堆栈还可以保存在数组、链表和二进制树中等。

无论堆栈怎样实现,堆栈的接口保持不变。也就是说,push( )和pop( )方法定义了独立实现细节的堆栈的接口。因为堆栈的接口与它的实现是分离的,很容易定义堆栈接口,而不用管每个定义实现细节。让我们看下面的两个例子。

下面定义了一个整数堆栈接口,把它保存在一个IntStack.java文件中。该接口将被两个堆栈实现使用。

// Define an integer stack interface. 
interface IntStack {
    
 void push(int item); // store an item 
 int pop(); // retrieve an item 
} 

下面的程序创建了一个名为FixedStack的类,该类实现一个固定长度的整数堆栈:

// An implementation of IntStack that uses fixed storage. 
class FixedStack implements IntStack {
    
 private int stck[]; 
 private int tos; 
 // allocate and initialize stack 
 FixedStack(int size) {
    
 stck = new int[size]; 
 tos = -1; 
 } 
 // Push an item onto the stack 
 public void push(int item) {
    
 if(tos==stck.length-1) // use length member 
 System.out.println("Stack is full."); 
 else 
 stck[++tos] = item; 
 } 
 // Pop an item from the stack 
 public int pop() {
    
 if(tos < 0) {
    
 System.out.println("Stack underflow."); 
 return 0; 
 } 
 else 
 return stck[tos--]; 
 } 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值