WEB开发网
开发学院WEB开发Jsp 接口和抽象类的定义方式举例说明 阅读

接口和抽象类的定义方式举例说明

 2008-01-05 08:28:55 来源:WEB开发网   
核心提示:接口定义关于java的接口定义方式,以下三种情况下可以采用接口定义方式:1.接口中声明的变量全部为final 和static类型的,接口和抽象类的定义方式举例说明,并且这个接口的作用在于定义一些值不能改变的变量,举个例子:
接口定义
关于java的接口定义方式,以下三种情况下可以采用接口定义方式:
1.  接口中声明的变量全部为final 和static类型的,并且这个接口的作用在于定义一些值不能改变的变量。
举个例子:
public interface ObjectConstants{
public static final String SPACE = new String(" ");
public static final char FORMFEED = '\f';
}
2.  接口中只定义可供实现的抽象方法
EventListener.java
  public interface EventListener {
  public void handleEvent(Event evt);
  }
Runnable.java
package java.lang;
  public interface Runnable {  
  public abstract void run();
  }
3.  还有一种方式是上述两种方式的组合,如非必要一般会将这样一个接口定义拆分成两个接口定义
抽象类的定义
1.  假如一个类包含一个接口但是不完全实现接口定义的方法,那么该类必须定义成abstract型
例如InputStream.java类的定义方式:
package java.io;
public abstract class InputStream implements Closeable {
  // SKip_BUFFER_SIZE is used to determine the size of skipBuffer
  PRivate static final int SKIP_BUFFER_SIZE = 2048;
  // skipBuffer is initialized in skip(long), if needed.
  private static byte[] skipBuffer;  
  public abstract int read() throws IOException;

  
  public int read(byte b[]) throws IOException {
  return read(b, 0, b.length);
  }  
  public int read(byte b[], int off, int len) throws IOException {
  if (b == null) {
    throw new NullPointerException();
  } else if ((off < 0) (off > b.length) (len < 0) 
      ((off + len) > b.length) ((off + len) < 0)) {
    throw new IndexOutOfBoundsException();
  } else if (len == 0) {
    return 0;
  }
  int c = read();
  if (c == -1) {
    return -1;
  }
  b[off] = (byte)c;
  int i = 1;
  try {
    for (; i < len ; i++) {
    c = read();
    if (c == -1) {
      break;
    }
    if (b != null) {
      b[off + i] = (byte)c;
    }
    }
  } catch (IOException ee) {
  }
  return i;
  }
 public long skip(long n) throws IOException {
  long remaining = n;
  int nr;
  if (skipBuffer == null)
    skipBuffer = new byte[SKIP_BUFFER_SIZE];
  byte[] localSkipBuffer = skipBuffer;    
  if (n <= 0) {
    return 0;
  }
  while (remaining > 0) {
    nr = read(localSkipBuffer, 0,
       (int) Math.min(SKIP_BUFFER_SIZE, remaining));
    if (nr < 0) {
    break;
    }
  remaining -= nr;
  }  
  return n - remaining;
  } 
  public int available() throws IOException {
  return 0;
  }  
  public void close() throws IOException {} 
  public synchronized void mark(int readlimit) {}  
  public synchronized void reset() throws IOException {
  throw new IOException("mark/reset not supported");
  }
  public boolean markSupported() {
  return false;
  }
}
2.  抽象类的方法体中只定义抽象的方法,例如AbstractMethodError.java
  package java.lang;
  public class AbstractMethodError extends IncompatibleClassChangeError {
  public AbstractMethodError() {
  super();}
  public AbstractMethodError(String s) {
  super(s); }
}进入讨论组讨论。

Tags:接口 抽象 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接