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 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名