当前位置:  技术问答>java相关

接口奇怪的用法????????????

    来源: 互联网  发布时间:2015-10-10

    本文导语:  //: SortVector.java // A generic sorting vector import java.util.*; interface Compare {   boolean lessThan(Object lhs, Object rhs);   boolean lessThanOrEqual(Object lhs, Object rhs); }  public class SortVector extends Vector {   private Compare compare;...

//: SortVector.java
// A generic sorting vector
import java.util.*;

interface Compare {
  boolean lessThan(Object lhs, Object rhs);
  boolean lessThanOrEqual(Object lhs, Object rhs);


public class SortVector extends Vector {
  private Compare compare; // To hold the callback
  public SortVector(Compare comp) {
    compare = comp;
  }
  public void sort() {
    quickSort(0, size() - 1);
  }
  private void quickSort(int left, int right) {
    if(right > left) {
      Object o1 = elementAt(right);
      int i = left - 1;
      int j = right;
      while(true) {
        while(compare.lessThan(  //here
              elementAt(++i), o1))
          ;
        while(j > 0)
          if(compare.lessThanOrEqual(   //here
             elementAt(--j), o1))
            break; // out of while
        if(i >= j) break;
        swap(i, j);
      }
      swap(i , right);
      quickSort(left, i-1);
      quickSort(i+1, right);
    }
  }
  private void swap(int loc1, int loc2) {
    Object tmp = elementAt(loc1);
    setElementAt(elementAt(loc2), loc1);
    setElementAt(tmp, loc2);
  }
} ///:~
请问接口Compare 起什么作用?
thanks

|
这是java多型性的一种体现。要实现接口中的方法,你还要定义一个类,如:
class A implements Compare{

  //必须实现来自接口的方法:
  boolean lessThan(Object lhs, Object rhs){
    ...//具体代码
  }
  boolean lessThanOrEqual(Object lhs, Object rhs){
    ...//具体代码
  }
}
那么你就可以将A作为一个Compare用到SortVector 里面去了。但是实际上你可能不只是用A所实现的方法解决你所有的问题,还有其它的比较,你只要再定义一个实现Compare接口的类B,由于SortVector 中声名的是Compare,A和B都是Compare,所以你的SortVector 类的代码就不用改变就可以直接达到你的目的,达到代码重用的目的了,你说有好处吗?

|
接口是常量值和方法定义的集合。

|
接口Compare在这里只是起到定义两个方法, 以便后面的程序实现这两个方法.

    
 
 

您可能感兴趣的文章:

  • PHP面向对象程序设计之接口用法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.script接口invocable的类成员方法: getinterface定义及介绍
  • 关于LOCAL接口和REMOTE接口的同时兼顾的问题
  • java命名空间javax.lang.model.element接口typeelement的类成员方法: getinterfaces定义及介绍
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getmanagementspecversion定义及介绍
  • LINUX下最大支持虚接口数是多少? 如果我想配置1000个虚接口可以吗?
  • java命名空间java.beans.beancontext接口beancontextproxy的类成员方法: getbeancontextproxy定义及介绍
  • 对于操作系统的程序接口,作业接口,单内核,微内核到底有什么区别?
  • java命名空间javax.print接口uriexception的类成员方法: getreason定义及介绍
  • java的API中有没有既实现了Map接口又实现了List接口的类?
  • java命名空间javax.swing.text接口caret的类成员方法: install定义及介绍
  • 菜鸟提问:一个类实现了一个接口,除了要定义接口的所有方法外,可不可以再添加其他方法?
  • java命名空间javax.swing接口rootpanecontainer的类成员方法: getrootpane定义及介绍
  • 急,请问如何修改网络接口eth为其它名称,如网络接口为abc0, abc1,要修改哪个配置文件?
  • java命名空间javax.swing.text接口highlighter的类成员方法: install定义及介绍
  • 有人在Linux下用过1394接口的设备吗?怎么装载一个1394接口的存储设备呢?
  • java命名空间java.lang.reflect接口parameterizedtype的类成员方法: getrawtype定义及介绍
  • 请问高手:EJB中的远程接口、本地接口、HOME接口的联系与区别是什么?应用时应注意哪些问题?
  • java命名空间javax.management接口descriptorread的类成员方法: getdescriptor定义及介绍
  • C#学习笔记之接口与基于接口的工厂模型
  • java命名空间javax.lang.model.element接口typeparameterelement的类成员方法: getgenericelement定义及介绍
  • 请问为什麽在J2ee中客户端(测试时)用jndi定位enterprise bean的时候,可以把远程接口实例化?接口不是不可以生成对象的吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3