网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  接口和抽象类的定义方式举例说明     
  文章作者:未知  文章来源:水木森林  
  查看:140次  录入:管理员--2007-11-17  
  接口定义
关于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); }
}
 
 
上一篇: 用maven制作java项目发行包    下一篇: java变量的赋值与传递
  相关文档
理解java的多形性 11-17
用java实现断点续传(http)(2) 11-17
类和对象的兼容性 11-17
jsp使用连接池连接数据库的问题 11-17
java中图片文件的缩放 11-17
基础:接口和抽象类的定义方式举例说明 12-27
j2se综合:与你一起讨论ajax进一阶应用 01-11
用 spring mvc 轻松进行应用程序开发(图) 11-17
java堆的管理--垃圾回收 11-17
介绍一些 java nio 的学习文章,以方便各位的学习! 11-17
j2ee会话外观模式与值对象 11-17
如何学习hibernate 11-17
[webservices]xfire web服务的单元测试 11-17
java编程技术中汉字问题的分析及解决 11-17
基础:vc调用java方法的一个注意问题 03-20
从 .net 应用程序访问 microsoft office 数据 11-17
如何在程序异常或正常退出jvm时执行特定代码 11-17
scjp braindumps 05/15/2002 11-17
动态proxy与java acl用户访问控制机制实现 11-17
james安装使用简易指南 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息