国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

接口和抽象類(lèi)的定義方式舉例說(shuō)明

2019-11-18 15:30:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
接口定義
關(guān)于java的接口定義方式,以下三種情況下可以采用接口定義方式:
1.    接口中聲明的變量全部為final 和static類(lèi)型的,并且這個(gè)接口的作用在于定義一些值不能改變的變量。
舉個(gè)例子:
public interface ObjectConstants{
public static final String SPACE = new String(" ");
public static final char FORMFEED = '/f';
}
2.    接口中只定義可供實(shí)現(xiàn)的抽象方法
EventListener.java
    public interface EventListener {
    public void handleEvent(Event evt);
    }
Runnable.java
package java.lang;
    public interface Runnable {   
    public abstract void run();
    }
3.    還有一種方式是上述兩種方式的組合,如非必要一般會(huì)將這樣一個(gè)接口定義拆分成兩個(gè)接口定義
抽象類(lèi)的定義
1.    假如一個(gè)類(lèi)包含一個(gè)接口但是不完全實(shí)現(xiàn)接口定義的方法,那么該類(lèi)必須定義成abstract型
例如InputStream.java類(lèi)的定義方式:
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.    抽象類(lèi)的方法體中只定義抽象的方法,例如AbstractMethodError.java
    package java.lang;
    public class AbstractMethodError extends IncompatibleClassChangeError {
    public AbstractMethodError() {
    super();}
    public AbstractMethodError(String s) {
    super(s); }
}進(jìn)入討論組討論。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 金湖县| 郎溪县| 鹤壁市| 瑞昌市| 延吉市| 陆丰市| 牟定县| 措勤县| 米林县| 敖汉旗| 平凉市| 宝兴县| 定安县| 盘锦市| 两当县| 昌宁县| 诸暨市| 平湖市| 平南县| 来宾市| 玉田县| 化德县| 常州市| 虞城县| 麻阳| 定边县| 横山县| 华亭县| 屯昌县| 庆元县| 婺源县| 河间市| 秀山| 永兴县| 东平县| 礼泉县| 彭水| 高邑县| 和静县| 东乡族自治县| 新源县|