程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 接口和抽象類的定義方式舉例說明

接口和抽象類的定義方式舉例說明

編輯:關於JAVA

接口定義

關於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); }

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved