请问父类声明实现一个接口,但子类又声明实现同一个接口有什么意义?

netepic 2016-08-30 09:14:06
在api的代码看到这两个类的声明:
public class PrintStream extends FilterOutputStream implements Appendable, Closeable
public abstract class OutputStream extends Object implements Closeable, Flushable

PrintStream是OutputStream的子类,明明父类已经实现了接口Closeable,为什么子类还要重复声明呢?这样做是什么目的?
...全文
1241 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
曾经我是菜 2019-10-19
  • 打赏
  • 举报
回复
也可能是一开始做测试的时候只有接口没有父类,后来发布的时候有了一个父类,然后又懒得一个个地把接口删除,就保留下来了。
_Markun 2018-09-17
  • 打赏
  • 举报
回复
子类和父类实现同一个接口 可以实现 因interface不能继承abstract而想要的 代码结构
脏不张 2016-09-08
  • 打赏
  • 举报
回复
方便继承啊,否则你为什么让子类继承父类,你直接写个新类好了
NewMoons 2016-09-08
  • 打赏
  • 举报
回复 1
这个问题之前的帖子已经讨论过了,有人已问过原著,原著承认是“”“手误”,而且这个手误在java里不止一处。 不过,这并不影响使用。只是使人产生一点迷惑罢了。
nikyotensai 2016-08-31
  • 打赏
  • 举报
回复
父类实现的不全,用的抽象类,功能不一样,请看具体代码
zhjdg 2016-08-31
  • 打赏
  • 举报
回复
如果,要查找implements Closeable 的类呢? category 和 tag
rendason 2016-08-31
  • 打赏
  • 举报
回复
原因之一就是实现了closeable的类可以使用java7的新特性try-with-resourse。 任何实现了 java.lang.AutoCloseable的对象, 包括所有实现了 java.io.Closeable 的对象, 都可以用作一个资源。try-with-resources语句确保在语句的最后每个资源都被关闭 。
GG__DGQN 2016-08-30
  • 打赏
  • 举报
回复
我觉得是显示出一个体系 , 所有实现Closeable接口的类都要close
静默QL 2016-08-30
  • 打赏
  • 举报
回复
抱歉,跑偏了。 原则上并没有什么区别,以上只是从代码阅读性的角度出发,并不是语法上的要求。
netepic 2016-08-30
  • 打赏
  • 举报
回复
引用 1 楼 u013785566 的回复:
继承是得到父类具有的非私有的属性和方法(构造方法也不能继承)。当然,close方法也是有的,但是父类的close方法关闭的是父类所new出来的那个流。对于子类,他也需要有关闭自己流的一个方法。所有需要写自己close()方法。 举个例子吧: outputStream 相当于针头, PrintStream 相当于针筒。那么问题来了,你在用针筒(里面套着针)的情况下,是直接拔下针筒,还是不管针筒,直接拔那个针???
我不是问为什么PrintStream要覆盖close()方法。我是问作为子类的 PrintStream 为什么要重复声明implements Closeable。因为父类已经声明了。不知道api这样写的目的是否向读者强调这个类实现了Closeable接口?
静默QL 2016-08-30
  • 打赏
  • 举报
回复
继承是得到父类具有的非私有的属性和方法(构造方法也不能继承)。当然,close方法也是有的,但是父类的close方法关闭的是父类所new出来的那个流。对于子类,他也需要有关闭自己流的一个方法。所有需要写自己close()方法。 举个例子吧: outputStream 相当于针头, PrintStream 相当于针筒。那么问题来了,你在用针筒(里面套着针)的情况下,是直接拔下针筒,还是不管针筒,直接拔那个针???

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧