public interface ObjectConstants{
PCi北方站长站public static final String SPACE = new String(" ");
PCi北方站长站public static final char FORMFEED = '/f';
PCi北方站长站}
PCi北方站长站2. 接口中只定义可供实现的抽象方法
PCi北方站长站EventListener.java
PCi北方站长站 public interface EventListener {
PCi北方站长站 public void handleEvent(Event evt);
PCi北方站长站 }
PCi北方站长站Runnable.java
PCi北方站长站package java.lang;
PCi北方站长站 public interface Runnable {
PCi北方站长站 public abstract void run();
PCi北方站长站 }
PCi北方站长站3. 还有一种方式是上述两种方式的组合,如非必要一般会将这样一个接口定义拆分成两个接口定义
PCi北方站长站抽象类的定义PCi北方站长站1. 如果一个类包含一个接口但是不完全实现接口定义的方法,那么该类必须定义成abstract型
PCi北方站长站例如InputStream.java类的定义方式:
PCi北方站长站package java.io;
PCi北方站长站public abstract class InputStream implements Closeable {
PCi北方站长站 // SKIP_BUFFER_SIZE is used to determine the size of skipBuffer
PCi北方站长站 private static final int SKIP_BUFFER_SIZE = 2048;
PCi北方站长站 // skipBuffer is initialized in skip(long), if needed.
PCi北方站长站 private static byte[] skipBuffer;
PCi北方站长站 public abstract int read() throws IOException;
PCi北方站长站 PCi北方站长站 public int read(byte b[]) throws IOException {
PCi北方站长站 return read(b, 0, b.length);
PCi北方站长站 }
PCi北方站长站 public int read(byte b[], int off, int len) throws IOException {
PCi北方站长站 if (b == null) {
PCi北方站长站 throw new NullPointerException();
PCi北方站长站 } else if ((off < 0) || (off > b.length) || (len < 0) ||
PCi北方站长站 ((off + len) > b.length) || ((off + len) < 0)) {
PCi北方站长站 throw new IndexOutOfBoundsException();
PCi北方站长站 } else if (len == 0) {
PCi北方站长站 return 0;
PCi北方站长站 }
PCi北方站长站 int c = read();
PCi北方站长站 if (c == -1) {
PCi北方站长站 return -1;
PCi北方站长站 }
PCi北方站长站 b[off] = (byte)c;
PCi北方站长站 int i = 1;
PCi北方站长站 try {
PCi北方站长站 for (; i < len ; i++) {
PCi北方站长站 c = read();
PCi北方站长站 if (c == -1) {
PCi北方站长站 break;
PCi北方站长站 }
PCi北方站长站 if (b != null) {
PCi北方站长站 b[off + i] = (byte)c;
PCi北方站长站 }
PCi北方站长站 }
PCi北方站长站 } catch (IOException ee) {
PCi北方站长站 }
PCi北方站长站 return i;
PCi北方站长站 }
PCi北方站长站 public long skip(long n) throws IOException {
PCi北方站长站 long remaining = n;
PCi北方站长站 int nr;
PCi北方站长站 if (skipBuffer == null)
PCi北方站长站 skipBuffer = new byte[SKIP_BUFFER_SIZE];
PCi北方站长站 byte[] localSkipBuffer = skipBuffer;
PCi北方站长站 if (n <= 0) {
PCi北方站长站 return 0;
PCi北方站长站 }
PCi北方站长站 while (remaining > 0) {
PCi北方站长站 nr = read(localSkipBuffer, 0,
PCi北方站长站 (int) Math.min(SKIP_BUFFER_SIZE, remaining));
PCi北方站长站 if (nr < 0) {
PCi北方站长站 break;
PCi北方站长站 }
PCi北方站长站 remaining -= nr;
PCi北方站长站 }
PCi北方站长站 return n - remaining;
PCi北方站长站 }
PCi北方站长站 public int available() throws IOException {
PCi北方站长站 return 0;
PCi北方站长站 }
PCi北方站长站 public void close() throws IOException {}
PCi北方站长站 public synchronized void mark(int readlimit) {}
PCi北方站长站 public synchronized void reset() throws IOException {
PCi北方站长站 throw new IOException("mark/reset not supported");
PCi北方站长站 }
PCi北方站长站 public boolean markSupported() {
PCi北方站长站 return false;
PCi北方站长站 }
PCi北方站长站}
PCi北方站长站2. 抽象类的方法体中只定义抽象的方法,例如AbstractMethodError.java
PCi北方站长站 package java.lang;
PCi北方站长站 public class AbstractMethodError extends IncompatibleClassChangeError {
PCi北方站长站 public AbstractMethodError() {
PCi北方站长站 super();}
PCi北方站长站 public AbstractMethodError(String s) {
PCi北方站长站 super(s); }
PCi北方站长站}
PCi北方站长站
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面