实验练习:接口的定义和实现。
接口是面向对象的一个重要的概念,利用接口使设计与实现分离,同时它也弥补了Java只支持但继承的不足,利用接口可以完成多继承的一些功能。
- 定义一个能够取数和送数的接口PutandGet,掌握接口的定义。
- 定义一个堆栈类Stack1实现接口PutandGet,掌握如何让一个类实现接口。
- 定义一个队列类Quene1实现接口PutandGet,体会在不同的类中接口的方法实现的不同方式。
- 定义一个测试类,分别定义堆栈和队列对象,测试栈和队列的正确性。
实现思想:使用数组实现。
Stack.java,实现堆栈功能,
使用int数组保存数据特点:先进后出
只需要一个数组和一个变量i,
当进来一个i,就给++i,出去一个元素i就–-
Queue.java,实现队列功能,
使用int数组保存数据特点:先进先出
相对栈结构要难一些,
需要一个数组和三个变量,
i记录已经进来了多少个元素,
index记录刚进来的元素应该放在哪个位置,
k表示用户要求弹出的元素所在的位置
实现代码:
Stack.java
package PutandGet;
interface PutandGet{
public void in(int m);
public int out();
}
class Stack implements PutandGet{
int[] a=new int[100];
private int i=1;
public void in(int m) {
a[++i]=m;
}
public int out() {
if(i>0) {
return a[i--];
}
else
return -1;
}
}
Queue.java
package PutandGet;
class Queue implements PutandGet{
int[] a=new int[100];
private int i=1;
public void in(int m) {
a[i++]=m;
}
public int out() {
int k=1;
int index=0;
int temp=a[k];
for(int j=k; j<i; j++) {
a[j-1]=a[j];
index++;
}
i=index;
return temp;
}
}
Test.java
package PutandGet;
public class Test {
public static void main(String[] args) {
Stack stack = new Stack();
System.out.println("Stack in()---1-10--------");
for(int i=1; i<=10; i++) {
stack.in(i);
}
System.out.println("Stack out()---1-10--------");
for(int i=1; i<=10; i++) {
System.out.println("out:" + stack.out());
}
Queue queue = new Queue();
System.out.println("Queue in()---1-10--------");
for(int i=1; i<=10; i++) {
queue.in(i);
}
System.out.println("Queue out()---1-10--------");
for(int i=1; i<=10; i++) {
System.out.println("out:" + queue.out());
}
}
}