iteye_13528 2010-06-13 18:29
浏览 244
已采纳

java接口的几个疑问

重新学习接口,对接口概念理解不够。
对此几个疑问:
1、有些接口会声明一些方法或者常量在里面,可为什么很多接口就只定义了一个接口名,{}里面却是空的。那接口在这里又起了什么作用呢?比如我们以Cloneable接口为例,我看了API,它有很多子接口。我自己的理解是,它先定义一个父接口,然后再实现很多子接口,子接口里再声明方法或常量,然后当我们需要不同子接口的时候再去实例化那些子接口。不知道这样的理解是不是对的?
2、哪种情况下我们要自己写接口?
3、接口对JAVA如此重要,在实际的项目开发中,如何知道我们要调用哪个接口?

现在就对这几个问题疑问较大,大家帮解一下疑惑。如果有更详细的接口资料,希望可以共享一下。谢谢!

  • 写回答

4条回答 默认 最新

  • weixin_42525162 2010-06-16 12:54
    关注

    我对接口的理解是,接口是方法声明的集合,而其主要是为了描述类的功能,但不明确指出具体的实现方式。
    接口有以下特征:
    1、接口中只可以定义常量和声明方法;
    2、接口中的任何方法都是public类型的;
    3、接口不能使用new操作符实例化;

    问题:
    1、关于Cloneable接口,在JDK帮助文档中有这样一段描述
    "如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。"
    如果我们再找找 Object的clone()方法,发现其实 protected 的。
    也就是说 Cloneable接口是Java的标记接口(Serializable也是)。

    2、很多情况下我们都需要自己去写接口。特别是要实现多态时。
    举个例子:
    某程序要读取外部文件,但按需求的不同,有两个格式不同的文件,这导致了读取方式不同,这时我们就可以用先写一个接口声明读取文件方法。再让两个类实现该接口,两个类中分别写了两种读取文件的代码。
    在读取文件时,我们就可以这样写
    [code="java"]IReadFile readFile = new ReadFileA();
    //当需要读取另一文件时,就可以简单的修改代码
    IReadFile readFile = new ReadFileB();[/code]

    3、记住这段话:
    "抽象不应依赖细节,细节应该依赖抽象"
    比如:Web项目,manager、Dao一般都需实现接口。

    以上是我对接口的总结,希望对你有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 MAC安装佳能LBP2900驱动的网盘提取码
  • ¥400 微信停车小程序谁懂的来
  • ¥15 ATAC测序到底用什么peak文件做Diffbind差异分析
  • ¥15 安装ubantu过程中第一个vfat 文件挂载失败
  • ¥20 GZ::CTF如何兼容一些靶机?
  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥15 QFILHelper怎么恢复全字库,提示进程已完成,只能恢复分区文件
  • ¥150 求 《小魔指》街机游戏机整合模拟软件