public class IFTest3 {
public static void main(String args[]){
IntStack mystack;//创建一个接口引用变量
DynStack ds=new DynStack(5);
FixedStack fs=new FixedStack(8);
mystack=ds;//load dynamic stack;
//push some numbers onto the stack
for(int i=0;i<12;i++) mystack.push(i);
mystack=fs;//load fixed stack;
for(int i=0;i<8;i++) mystack.push(i);
mystack=ds;
System.out.println("Stack numbers in dynamic stack:");
for(int i=0;i<12;i++)
System.out.println(mystack.pop());
System.out.println("Stack numbers in fixed stack:");
for(int i=0;i<8;i++)
System.out.println(mystack.pop());
}
}
这个程序中,mystack是指向IntStack接口的引用,这个接口的定义可以参考下文或者看之前的一篇博客。
public interface IntStack {
void push(int item);//store an item
int pop();//retrieve an item
}
ds是DynStack类的实例,fs是FixedStack类的实例。如果mystack引用ds,就调用DynStack类的push()和pop(),如果mystack引用fs,就调用FixedStack类的push()和pop()。
总结:通过接口引用变量访问接口的多个实现,是java获得运行时多态特性的最强大方式。
总结:通过接口引用变量访问接口的多个实现,是java获得运行时多态特性的最强大方式。
总结:通过接口引用变量访问接口的多个实现,是java获得运行时多态特性的最强大方式。